Dodge cái chết của bạn!


13

Giới thiệu

"Muhuhuhahahah!" Nhà khoa học điên cười. "Bạn bị mắc kẹt trong trò chơi nhỏ của riêng tôi!"

Trước mặt bạn là một hố rắn chết người, trong khi phía sau bạn là một vực thẳm không đáy. Không có lối thoát, bạn bị mắc kẹt!

"Hai bước trước mặt bạn là hố rắn, và hai bước phía sau bạn là vực thẳm. Nhưng! Trước khi bạn di chuyển, bạn PHẢI viết ra một chuỗi các bước, tiến và lùi, và đưa chúng cho tôi. Nhưng! Hôm nay tôi cảm thấy hơi ác , tôi có thể khiến bạn thực hiện, thay vì từng bước, từng nbước, nơi nnhỏ hơn độ dài chuỗi của bạn!

Chọn một cách khôn ngoan, ngay bây giờ. "

Số bước tối đa bạn có thể thực hiện trước khi chết sắp xảy ra là bao nhiêu?

Bài tập

Phần giới thiệu ở trên là một sự thay đổi trong phỏng đoán về sự khác biệt của Erd , gần đây đã được chứng minh là đúng (nếu bạn muốn hiểu thêm về điều này, hãy xem video này , bởi James Grime - Tôi đã "đánh cắp" câu hỏi xoắn của anh ta).

Câu trả lời cho phần giới thiệu là 11các bước, nhưng tôi sẽ không đi quá sâu với một bằng chứng. Câu trả lời, nếu khoảng cách giữa bạn và hai "mối nguy hiểm" là 3các bước, là 1160các bước, mặc dù điều đó chưa được xác thực hợp lệ.

Nhiệm vụ của bạn là tạo ra một chương trình tạo ra chuỗi các bước dài nhất bạn có thể đạt được để lớn hơn x, trong đó xsố bước giữa bạn và hai "mối nguy hiểm". Chương trình của bạn phải có một đầu vào cho xvà xuất một chuỗi hợp lệ cho điều đó x.

Đối với mục đích của thử thách này, +đại diện cho một bước tiến và -đại diện cho một bước lùi.

Vì vậy, một đầu ra cho một đầu vào 2là:

+--+-++--++

Mà làm việc, không có vấn đề gì ncác nhà khoa học điên chọn. Đối với thử thách của chúng tôi , x = 5.

LƯU Ý: Thử thách này không phải là một bản sao của thử thách này hay thử thách này , vì thử thách của tôi tập trung vào đầu ra, trái ngược với chính mã - nói cách khác, đó không phải là thử thách golf mã. Cũng như vậy, những thách thức này được dựa trên x = 3, đã có một giới hạn trên được thiết lập.

Quy tắc:

  • Toàn bộ chương trình của bạn phải phù hợp với câu trả lời của bạn. Tuy nhiên, nếu nó không phù hợp, vui lòng cung cấp thêm kho Github hoặc một cái gì đó tương tự.
  • Bạn có thể cập nhật cả câu trả lời và chương trình của mình, nếu bạn có thể đạt điểm cao hơn thông qua tối ưu hóa mã của mình - nhưng bằng cách đó, bạn phải cập nhật mọi thứ trong danh sách bên dưới.
  • Trong câu trả lời của bạn, bạn phải có:
    • Toàn bộ chương trình của bạn hoặc liên kết đến kho lưu trữ GH lưu trữ mã của bạn
    • Số lượng các bước được tạo - đây sẽ là điểm số cuối cùng của bạn .
      • Bạn cũng phải cung cấp một phiên bản trực tuyến của chuỗi trong Pastebin hoặc một cái gì đó tương tự. Điều này là để chúng tôi có thể kiểm tra câu trả lời của bạn.
    • Thời gian điểm cuối cùng của bạn được cập nhật lần cuối, vì vậy tôi không phải kiểm tra lịch sử của bạn
  • Bạn có thể KHÔNG trình tự mã hóa cứng trước.
  • Chương trình của bạn phải hoạt động cho tất cảx (trong đó xsố bước giữa bạn và hố & giới hạn), nhưng bạn chỉ cần cung cấp điểm số cho x = 5.

Câu trả lời với số điểm lớn nhất sẽ thắng!


Chỉ cần kiểm tra sự hiểu biết của tôi, bạn cần một chuỗi trong đó ngay cả khi bạn lấy mọi thứ khác, hoặc mọi yếu tố thứ ba, bạn vẫn sống sót?
Notts90 tắt cho codidact.org

1
@ Notts90 Yup - mặc dù vậy, nó không chỉ hoạt động cho điều đó. Nó phải hoạt động nếu bạn thực hiện từng nbước thứ, trong đó nbất kỳ số nào dưới kích thước trình tự của bạn.
clismique

Liên quan rất chặt chẽ . (Tôi gọi đây là một bản sao tiềm năng trong hộp cát; do đó tôi đã mong đợi văn bản của thách thức ít nhất là thảo luận về nó.)

Tôi nghĩ rằng thách thức này là không thể, thực tế nói. Tìm độ dài chênh lệch tối đa cho x=5sẽ đòi hỏi một bước đột phá lớn đáng để xuất bản. Hãy xem xét rằng mức tối đa 1160 cho x=3đã được chứng minh và công bố vào năm 2014không có giá trị nào nữa được biết đến. .
xnor

Là 0 một N thích hợp?
tuskiomi

Câu trả lời:


6

Rust, điểm số = 4997216, thời gian = 2017-07-12 00:18 UTC

Điều này cải thiện kết quả tốt nhất mà tôi có thể tìm thấy trong tài liệu, đó là 1148805 (Ronan Le Bras, Carla P. Gomes, Bart Selman, Về vấn đề sai lệch Erdős , 2014), theo hệ số 4.3.

Trình tự đầu ra có chiều dài 4997216

Mã nguồn trên GitHub

Đang chạy

Chương trình chấp nhận sự khác biệt tối đa như là một đối số (đây là x - 1 trong ngôn ngữ của thách thức, để phù hợp với quy ước toán học phổ biến hơn). Nó tạo ra các đầu ra gia tăng ở định dạng hơi nén giống như thế này cho x = 3:

$ cargo run --release 2
add +--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-+
length 90
delete 12
add --++--+-++-++--+-++--+--+-++--+-
length 110
delete 4
add +-+--+-++-++--+-++--+--+-++-++--+-++-+
length 144
delete 6
add --++-++--+-++--+--++++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-+-
length 214
delete 208
add --+++--+++--+-+--+++--+-+--+++--++---+-+--+-+-++-+--+++--+++--+---++-+--+-++-+++---++--+-++-++--++--+--++--+++--+-+-++-+--+-+--+++---+++-+----+++--+-++--++-+-++--+-+--+-+-++-+--+++--++--+--+--+-++-++---++-++-++-+--+-++
length 224
delete 2
add -+++--+-+--+++---++--+--
length 246
done

trong đó addcó nghĩa là nối một chuỗi các dấu hiệu vào cuối chuỗi hiện tại, deletenghĩa là loại bỏ một số dấu hiệu từ cuối chuỗi hiện tại và lengthxác nhận độ dài của chuỗi hiện tại. Sơ đồ này tránh việc tạo ra nhiều gigabyte kết quả trung gian khi các chuỗi dài hơn và dài hơn được phát hiện. Bạn có thể trích xuất kết quả tốt nhất cho đến nay với chương trình Python sau:

import sys
s = ''
for line in sys.stdin:
    cmd = line.split()
    if cmd[0] == 'delete': s = s[:-int(cmd[1])]
    elif cmd[0] == 'add': s += cmd[1]
    elif cmd[0] == 'length': assert len(s) == int(cmd[1])
print(s)

Làm thế nào nó hoạt động

Có khoảng một ngàn dòng mã ở đây, vì vậy đây sẽ chỉ là một tổng quan rất thô.

Chúng tôi giới hạn tìm kiếm ở các chuỗi nhân hoàn toàn (những người có f ( a · b ) = f ( a ) · f ( b )), vì điều đó có nghĩa là chúng tôi chỉ cần quan tâm đến việc ràng buộc các khoản tiền một phần cho n = 1 và một phần tổng cho n ≥ 2 sẽ tự động thỏa mãn ràng buộc tương tự.

Đối với bất kỳ chuỗi con f ( i + 1), Mạnh, f ( j ) của chuỗi ký hiệu được gán một phần (vì vậy mỗi phần tử là '+', '-' hoặc không xác định), xác định nguy hiểm + ( i , j ) là hai lần số lượng '+' trừ đi độ dài j - i (để thuận tiện, chúng tôi cho phép tôi nhỏ bằng - x + 2 và giả sử f (- x + 3) = ⋯ = f (0) = '+' cho Mục đích này). Xác định nguy hiểm - ( i , j ) tương tự. Sau đó, ràng buộc về tổng một phần cho n= 1 tương đương với điều kiện là bất cứ khi nào tôijx (mod 2), nguy hiểm + ( i , j ) ≤ x - 2 và nguy hiểm - ( i , j ) ≤ x - 2.

Chúng tôi xây dựng cấu trúc dữ liệu gia tăng hỗ trợ các truy vấn thời gian liên tục cho chuỗi con có mức độ nguy hiểm lớn nhất, với các cập nhật thời gian logarit. Nó hoạt động bằng cách liên kết bốn giá trị:

  • nguy hiểm ( i , j ),
  • tối đa ikj nguy hiểm ( i , k ),
  • tối đa ikj nguy hiểm ( k , j ) và
  • tối đa iklj nguy hiểm ( k , l ),

với mỗi chuỗi có độ dài 2, mọi chuỗi khác có độ dài 4, mỗi chuỗi thứ tư có độ dài 8, v.v. Các giá trị được liên kết với một chuỗi dài hơn có thể được tính trong thời gian không đổi từ các giá trị được liên kết với hai nửa của nó.

Cấu trúc này, được bổ sung một số thông tin phụ trợ, cho phép chúng tôi thực hiện lan truyền ràng buộc và phát hiện xung đột trên các chuỗi một phần rất nhanh. Chúng tôi sử dụng nó để thực hiện tìm kiếm giống như CDCL , với sự lan truyền đơn vị, mức độ quyết định và quay lui không theo trình tự thời gian (nhưng hiện tại không có điều khoản học), cho các chuỗi đầy đủ dài hơn và dài hơn.

Ở mỗi bước tìm kiếm, chúng tôi đoán ra dấu hiệu chưa được gán sớm nhất. Các heuristic được sử dụng để đưa ra dự đoán này là rất quan trọng để tránh rất nhiều quay lui; chúng tôi sử dụng f (3 · k ) = - f ( k ), f (3 · k + 1) = '+', f (3 · k + 2) = '-'.

Các kết quả

Sự khác biệt 0, 1 và 2 tìm kiếm ngay lập tức tìm thấy các chuỗi nhân hoàn toàn tối ưu có độ dài 0, 9 và 246.

Tìm kiếm sai lệch 3 bị kẹt trong vài giây ở 41319, khá xa so với trình tự nhân hoàn toàn tối ưu đã biết của độ dài 127645 được tìm thấy bởi Le Bras và cộng sự, 2014 (và một phần mở rộng không nhân rộng dài hơn một chút 130000 được tìm thấy ngay sau đó ), nhưng tốt hơn nhiều so với trình tự được biết đến trước đó với độ dài 17000 .

Việc tìm kiếm sự khác biệt 4 cải thiện chuỗi dài nhất ít nhiều liên tục trong khoảng năm phút cho đến khi nó được mắc kẹt tại 4997216. Điều tốt nhất dãy biết trước chiều dài 1.148.805 = 9 · 127.645 đã được mở rộng từ dãy biệt 3 bằng cách thay thế mỗi ký hiệu s với + - - + - ++ - s . Theo như tôi có thể nói, các chuỗi dài này quá khó để một người giải SAT nói chung có thể cải thiện trực tiếp một cách hợp lý (nhưng có lẽ bạn, độc giả thân yêu, có thể chứng minh tôi sai!).

Tôi hy vọng tôi sẽ cần thêm một số loại mệnh đề học vào chương trình của mình để vượt qua những rào cản này.

Chuỗi dưới dạng bitmap 2187 × 2285

(Bấm để xem ở độ phân giải đầy đủ.)

chuỗi dưới dạng bitmap 2187 × 2285


127465 là cho trình tự nhân hoàn toàn, phải không?
Máy

"Học khoản"?
Máy

Xem điều khoản hướng đến xung đột khi học tập củaititit về cách các nhà giải quyết SAT hiện đại hoạt động.
Anders Kaseorg

3

Haskell , điểm = 9020, thời gian = 2017-06-09 00:52 UTC

f 1=""
f n="+-"++do c<-f(n-1)++"-";"-+-++-"++c:"+-"

Hãy thử trực tuyến!

Điểm này (9 n - 1 - 1) 11/8 cho tất cả n . Dưới đây là một vài kết quả đầu ra:

n=1, length=0: 
n=2, length=11: +--+-++--+-
n=3, length=110: +--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+-
n=4, length=1001: +--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+-
n=5, length=9020: +--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++-++--+-++-++--+-++--+--+-++--+--+-++-++--+-++--+--+-++--+-
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.