Nén một chuỗi sai lệch tối đa-2


18

Xuất chuỗi nhị phân này có độ dài 1160:

-++-+--++-++-+--+--++-+--+--++-+--++-++-+-++--++-+---+-++-+--+--++++--+--++-+--++-++----++-++-+-++--++-+-+---++-+--++-++-+--++-+--+---+-++-+--++-++-+--+--++-++-+--++-+--+++-+-+----+++-+--+--+++---++-++-+--+--+++--+-+-+--+-+++-++-+--+--++-+--++-++-+--+--++--+++---+++-+---++-+--++--+-+--+-+++-+--++-++-+--++-+--+--++-+--++--+-++-+-+--+-+-++-+--++-+--+--++-+-+-++-+-+-++---+-+--++++--+---++-+-++-+--++-+--+--++-+--++++--+---+-++++--+--++-++-+--++-+--+--++-+--++-++-+--++-+--+--++-++-+----+++-+--++--+++---+-++-+--+-++---+-++-++-+--+--++--++++-+--+--+--++++--+--+++---++-++-+--++--+-+--+--++-++-+--+--+-+++-++-+--+--++--+-++-++-+--+--+--++-++-+--+++---++-+--++-++---+++---++-++----+++--+-++-+--+--++-+--++-++-+-++--++--++----+++-++--++----++-+++--++---+++----+-+-++-++-++-+-+----+++--++-+--++-++-+--+--+--++-+--++-++-+--++--+-+--+-+-+-++++---+-+-++--+--+-+-+-++-+-+++--+-+--+--+-+++--+-+++---++-+--+--++-++--++---++-+-++--++-+---+-++-+--+-++--++-+--++-+--+-+++-+--++--+-+-+++--+-+--++-++-+--+--+-++---+-++-+-++--++-+--+++-+----++--+-++-+-++--++-+--++-+-++--++-+---+-++-+--+++----+-+-++--++-+--++-++-++-+--+--+--++++---++---+-+-++-+-+++--+-++--+-+--+-+-++---+++-++

Trình tự

Trình tự hữu hạn này được cấu trúc chặt chẽ theo cách mà tôi hy vọng cho vay các phương thức duy nhất để nén. Nó phát sinh từ vấn đề khác biệt của Erd, được đề cập trong một thử thách trước đó .

Coi các thuật ngữ là +1 và -1, đây là chuỗi sai lệch có độ dài tối đa 2, có nghĩa là:

Đối với mọi kích thước bước tích cực d, nếu bạn thực hiện mọi dthuật ngữ thứ nhất (bắt đầu từ dthuật ngữ thứ), tổng số hoạt động của chuỗi kết quả vẫn nằm trong khoảng từ 2 đến 2.

Nếu bạn nghĩ rằng mỗi +bước có nghĩa là một bước phải và -có nghĩa là một bước trái, điều này có nghĩa là bước đi của mỗi dhướng dẫn thứ không bao giờ đi quá 2 bước so với vị trí bắt đầu.

Ví dụ: d=3lấy, mỗi kỳ thứ 3 sẽ đưa ra chuỗi +-++--+--+-..., có tổng số tiền đang chạy [1,0,1,2,1,0,1,0,-1,0,1,...], không bao giờ đạt -3 hoặc 3.

-++-+--++-++-+--+--++-+--+--++-+--+...
  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^
  +  -  +  +  -  -  +  -  -  +  -
   1  0  1  2  1  0  1  0 -1  0  -1  ...

Trình tự này đã được tìm thấy vào năm 2014 thông qua một tìm kiếm máy tính. Xem bài viết này , trong đó trình tự được sao chép trong Phụ lục B. Tìm kiếm chứng minh rằng 1160 là độ dài tối đa của chuỗi 2 sai lệch, mặc dù có nhiều hơn một chuỗi có độ dài đó. Vấn đề sai lệch của Erd, đã được chứng minh vào năm 2015 , nói rằng bất kỳ chuỗi nào như vậy phải có độ dài hữu hạn cho bất kỳ sự khác biệt tối đa nào cthay cho 2.

Yêu cầu về thời gian

Mã của bạn sẽ hoàn thành trong vòng 5 giây . Điều này là để hạn chế vũ phu.

Định dạng đầu ra

Bạn có thể sử dụng bất kỳ hai ký tự hoặc giá trị riêng biệt cố định nào cho +-ở bất kỳ định dạng giống như danh sách hoặc chuỗi nào. Định dạng phải là một trong đó các giá trị bit 1160 có thể được đọc trực tiếp, không được mã hóa dưới dạng số thông qua biểu diễn nhị phân hoặc chuỗi thông qua các giá trị ký tự. Đối với đầu ra chuỗi, một dòng mới được cho phép.

Bảng xếp hạng


Các chuỗi con phổ biến nhất có độ dài 1-16 nếu có ai muốn biết
ASCII - chỉ

Tôi cảm thấy như sẽ rất khó để đánh bại nén ...
Esolanging Fruit

Câu trả lời:


3

Thạch , 149 byte

“×GOẈ*m¬¿3d{ẋạ⁻@Ɓ]ZĊỵINBƬḊṿẊ*N¹Ẹ÷ƲẋɼoṬḳ£®⁾ƙŒọ¡[P1&ạ€ẊʠNỌXḢṖėÐß⁹Ụṗ¬⁹E#ụḷḌṁżżR=Ɗѳıɲ-ṭỌṾɲẎĿỴ⁶€ḋtɦÐ\ỵƒ⁾ƒụṫṡĊKpƭẏkaṪ,Ẋȧ⁻ḅMɓ%YḷsƲƭl¤æĊbṬ9D6ẎƘẓ^Œ⁷Ɲḷḷ€ḟ1g’B

Có một số mẫu, ví dụ chỉ có 81 trong số 256 chuỗi nhị phân dài 256 có mặt nếu một chuỗi cắt chuỗi thành số, nhưng tôi chưa (ít nhất là) nhận thấy bất kỳ cách nào để sử dụng bất kỳ cách nào để giảm số byte từ cơ sở chuyển tiếp thẳng này 250 nén được chuyển đổi thành một danh sách nhị phân.

Hãy thử trực tuyến! (chân trang định dạng danh sách nhị phân thành một chuỗi để so sánh trực tiếp dễ dàng hơn).


3

Python 2 , 269 259 256 247 245 243 byte

r=[1]
c=int('bmqnh8j8rdo4mirjos6uxbfthu8t39pjy6up43axryzwbwcu5d528nsakitjwqbo6dnnozy0oybhk6jduaoc53lqkzdb04opj5t50a24w9he5y7qbgd2',36)
while c:t=sum(sum(r[::-k])/3for k in range(1,264)if len(r)%k<1);r[-1:]=cmp(0,t)or c%2*2-1,1;c>>=t==0
print r

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


3

JavaScript (ES6), 263 253 252 byte

Tôi đã cố gắng sử dụng dữ liệu tải trọng càng ít càng tốt. Đáng buồn thay - nhưng không đáng ngạc nhiên - điều này đòi hỏi khá nhiều mã giải nén.

Phá vỡ:

  • dữ liệu tải trọng: 75 byte, được mã hóa dưới dạng chuỗi Base64 100 ký tự
  • mã: 163 153 152 byte

Dưới đây là một phiên bản được định dạng mà không có dữ liệu. Mã thô nằm trong đoạn mã demo.

f = (a = Array(264).fill(n = p = 0)) =>
  n++ < 1160 ?
    '+/-'[
      p += !a.some((v, i) =>
        n % i | v * v - 4 ?
          0
        :
          r = v / 2,
        r = atob`...`.charCodeAt(p / 8) >> p % 8 & 1 || -1
      ),
      r + 1
    ] +
    f(a.map((v, i) => n % i ? v : v - r))
  :
    ''

Làm sao?

Chúng tôi theo dõi các khoản tiền đang chạy [i] của mọi điều khoản thứ i . Mỗi lần một khoản tiền này đạt đến giới hạn dưới -2 , chúng tôi biết rằng thuật ngữ tiếp theo phải là + . Logic tương tự áp dụng cho giới hạn trên. Điều này hữu ích lên tới i = 264 và không lưu thêm bất kỳ byte nào ngoài điều đó.

Điều này để lại cho chúng tôi với 599 điều khoản không thể đoán được. Chúng tôi lưu trữ chúng là 99599 / 8⌉ = 75 byte, được mã hóa theo chuỗi Base64 gồm 100 ký tự.

Bản giới thiệu


3

Thạch , 110 109 107 byte

;1mS€:3o/Nȯ®Ṫṭḷ
“ĖṄẋ{Xṛ-İIṗ®6⁼Ḟ2a⁻!Ċẉȥ+¡Ƒ¥mvrẓsṘ×⁴ç&$nỴỤ)M7?ẊẎḅ=ṠƈTṙḌȥụẋXḌ⁵Ḣ⁺ḲL÷æTƥĿv€%ḟ¢®!Ė’BḤ’©ṛ⁽¡ɠÆD€Nç/

Điều này mất quá nhiều thời gian trên TIO, nhưng nó kết thúc dưới 3 giây trên máy tính để bàn của tôi.

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


3

Thạch , 135 133 130 129 105 104 byte

42“I=İėZP*ðEḄẈṆ'mBƝėŻƝ6®Ṇɼḥ[bȦėṡV£(6ṘɱX)Ṅẹ6~K7°ȤÄỴ¥ƝÇ5prḳġŻ£ƭṗṄFṾḃ{©@ɼ’ḃÄċL
L+Ø.ÆDm@NÇ¡§§No¥/Ṡo-ṭ
Ç⁽¡ɠ¡Ḋ

Dựa trên các yếu tố trước của chuỗi, thuật toán đưa ra dự đoán có giáo dục về yếu tố tiếp theo có thể là gì. Điều này hoạt động cho tất cả trừ 99 phần tử, có chỉ số được mã hóa cứng để các phần tử tương ứng có thể được hoán đổi.

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


2

MATL , 224 byte

862:o'$Te]BQHoHxkw!-CEjv(j=zGp.8_C{\?wkH{t&%W.:ja#7=+>"/,=0wDJ+"2BREtgh9_2I%1>+99T3kPrknzlJ}&8kUR(S!pX]C]05u{"6MHA7"gg(M6\5Vp.k.18Y(c~m&wroTrN)sf" |>\,Lg80C:nUez|l;<h~m(%]4xx6?`=qGtZ):d"*"@~1M.T}jJ)Bl7>Ns >9$8R1MlkG'F3:qZaY"

Các ouput có dạng 1 0 0 1 0 ..., nơi 1tương ứng '-'0tương ứng với '+'.

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

Giải trình

Trình tự đã được mã hóa chiều dài chạy. Tất cả 720 lần chạy có độ dài 1, 2, 3 hoặc 4, với 3 hoặc 4 là ít phổ biến hơn. Vì vậy, mỗi 3 đã được thay thế bằng 2, 0, 1 (chạy 2, sau đó chạy 0 của biểu tượng khác, sau đó chạy lại 1) và tương tự, mỗi 4 đã được thay thế bằng 2, 0, 2. Điều này đưa ra một mảng ternary có chiều dài 862.

Mảng này được chuyển đổi thành mã hóa cơ sở 94 và là chuỗi dài được hiển thị trong mã ( '$Te...kG'). Mã hóa cơ sở 94 sử dụng tất cả 95 ký tự ASCII có thể in được ngoại trừ trích dẫn đơn (sẽ phải thoát).

Mã chuyển đổi chuỗi đó từ cơ sở 94 sang cơ sở 3 và sử dụng kết quả để giải mã độ dài chạy [1 0 1 0 ... 0](mảng có độ dài 862).


2

Thạch , 95 byte

“qạʂṅs⁽fØʋZ%BÞġı½.m0&u⁺TsƝȧAuỴż⁶3uÞ$+ȷ@4Ṣ’BḤC©µmLÆD$§SṠȯ®ṪNLḟ“⁶ .£µ+£gÐ9Ц.ñ×µ¥¤®‘ÄḤ¤ɗ}¡ṭø⁽¡ɠ¡Ḋ

Một điểm giữa giữa hai cách tiếp cận trước đây của tôi.

Mã này cố gắng đoán 842 phần tử của chuỗi và mã hóa 318 phần tử còn lại. 19 trong số các dự đoán là không chính xác và phải được hoàn nguyên thông qua một danh sách các chỉ số được mã hóa cứng.

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

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

“qạʂṅs⁽fØʋZ%BÞġı½.m0&u⁺TsƝȧAuỴż⁶3uÞ$+ȷ@4Ṣ’

380009100940380065412452185545474826295694594854898450166594167299196720639075810827320738450934©

BḤC©

BC1±1

µmLÆD$§SṠȯ®ṪNLḟ“⁶ .£µ+£gÐ9Ц.ñ×µ¥¤®‘ÄḤ¤ɗ}¡ṭ

0

mLÆD$§SṠȯ®ṪNLḟ“⁶ .£µ+£gÐ9Ц.ñ×µ¥¤®‘ÄḤ¤ɗ}¡ṭ  Monadic chain. Arument: A (array)

 LÆÐ$                                       Compute all divisors of the length of A.
m                                           For each divisor d, generate the subarray
                                            of each d-th element.
     §                                      Take the sum of each subarray.
      S                                     Take the sum of the sums.
       Ṡ                                    Take the sign of the sum.
        ȯ®                                  If the result is 0, replace it with the
                                            array in the register.
          Ṫ                                 Tail; pop and yield the last element,
                                            modifying the register for a zero sum.
                                            This is a no-op for a non-zero sum.
              “⁶ .£µ+£gÐ9Ц.ñ×µ¥¤®‘ÄḤ¤      Yield all indices of incorrect guesses.
           NLḟ                        ɗ¡    If the length of A doesn't appear among
                                            the indices, negate the result.
                                        ṭ   Append the result to A.
ø⁽¡ɠ¡Ḋ

0⁽¡ɠ11600


Có vẻ như mã hóa số học sẽ đơn giản hơn thay đổi thủ công một số mục; Bạn đã thử điều đó hay Jelly không thích hợp cho nó?
lirtosiast

Chỉ có 19 mục phải được thay đổi, được mã hóa thành 23 byte. Tôi nghĩ rằng một bộ giải mã số học sẽ dài hơn thế, ít nhất là với dữ liệu liên quan.
Dennis

1

Than , 150 byte

”a∧∨~℅¹÷Oμ6fCC⁼∕⁵^;Ÿ‘«·T:∕D_=v§AHŒ,—<Pr¢E!◨±L^|.τ"NO“šþŽ∧<n`bÞE÷β$+Z⟦5⁶⁻.λ‹ζd⧴X>w,⊞?‹⟧⌈⪪-h÷³N“K⁺L¿>ρ@P⟲↘3νηKx÷?>™Ž¿•:8V¦£œεG↧x℅7¶	NRü"m”⟦)&¶bE“Yv”

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

Làm cho việc sử dụng nén chuỗi dựng sẵn của Char than. Sử dụng .cho -!cho +.


1

CJam, 153 byte

"Ke²ÉLº[
O%2¹d²Ý,Éeñlr[´KeÙ.Y­K-iZ[*Të
ÊYl°Ý
ËeËd¼Y%³l69,ÖÉmÙ¤¶ÉcN9<il²S3ÄÏ#8õ$¯d¶Ë%Õ¦Õ(Öѣɦ]-2ËEd¶)/4¦YLºXõ2É-°çR5©Ä"256b2b

Sử dụng 1cho -, và 0cho +.

Chứa không thể in được. Hãy thử trực tuyến!

Điều này khá đơn giản. Chuyển đổi một chuỗi dài từ cơ sở 256 sang cơ sở 2.


1

Python 3 , 236 232 byte

Cảm ơn Mego đã lưu 4 byte

#coding:437
print(bin(int.from_bytes('ûKe▓╔L║[\rûO%2╣d▓▌,û╔eè±lr[\x1a┤KeÆ┘Ä.Y¡\x16K-ûiZû[*Tδ\r╩Yl░▌\rÆ╦eÆ╦d╝YÄû¥%│\x0bl69,╓╔m\x12┘ñ╢╔cûN9<il▓S3─╧#8⌡$»\x19d╢╦%Ü╒\x0eª╒(╓╤úû╔£ª]-2╦EÜìd╢¥)û/4ªYL║X⌡2╔-░τRì5⌐─'.encode('437'),'big'))[2:])

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

Sử dụng mã hóa CP-437. Cảm ơn Dennis đã chỉ ra một lỗi.


437là một bí danh cho cp437, vì vậy bạn có thể loại bỏ 4 byte bằng cách loại bỏ các cpbit cả hai lần chúng xảy ra.
Mego

0

Python 2 , 364 250 byte

Cảm ơn Jonathan Allan vì đã tiết kiệm 114 byte.

print bin(int('28x0lphxjx8ze4uuhtdzo0oebr25amtmuxm62cbit0ibdwjm2sf50clh2ejq0a73ndseo5tove8uqca6nf66bo4abbkg867woh2b435at0o3pddvqmsqp29b6as5bd4eo28xgwkkj607gp66icba1q4n9fc13dltp45j340mpzbc56wsrbb3oejnczsbzfgh82xdi8aku8m4wlmwuxkgy4yaew7pu4p1g',36))[2:]

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


0

C # , 385 byte


Dữ liệu

  • Không nhập
  • Kết quả Kết quả String giả vờ.

Chơi gôn

()=>{var s="i´\u009aM6³E¤òi°ÚÍF\u009bM\"Ói6\u009au\u000e\u0093\u008d¤åK´\u009am&qѦRé´Òi\u0096¥i¤Õ«\u0014ò5¦\u0093O\"òm4\u009am4\u009bC¦qibÚLô\u0093ÉÆÓ)6\u0092í&[I6\u009ci±ÆÃ\u0096\u0093M¬Ì;0ÜÇ\nÛPæ\u009bI4Úe*ñY*×).\\i6cY¢ÒÍ4ºer\u009bIbÖiÐËY¦³E§\nÍ6ÒO\u0018­rÊV;";var o="";foreach(var c in s)foreach(var b in Convert.ToString(c,2).PadLeft(8,'0'))o+=(char)(43+(49-(int)b)*2);return o;};

Ung dung

() => {
    var s = "i´\u009aM6³E¤òi°ÚÍF\u009bM\"Ói6\u009au\u000e\u0093\u008d¤åK´\u009am&qѦRé´Òi\u0096¥i¤Õ«\u0014ò5¦\u0093O\"òm4\u009am4\u009bC¦qibÚLô\u0093ÉÆÓ)6\u0092í&[I6\u009ci±ÆÃ\u0096\u0093M¬Ì;0ÜÇ\nÛPæ\u009bI4Úe*ñY*×).\\i6cY¢ÒÍ4ºer\u009bIbÖiÐËY¦³E§\nÍ6ÒO\u0018­rÊV;";
    var o = "";

    foreach( var c in s )
        foreach( var b in Convert.ToString( c, 2 ).PadLeft( 8, '0' ) )
            o += (char) ( 43 + ( 49 - (int) b ) * 2 );

    return o;
};

Mã đầy đủ

using System;

namespace Namespace {
   class Program {
      static void Main( String[] args ) {
        Func<String> f = () => {
            var s = "i´\u009aM6³E¤òi°ÚÍF\u009bM\"Ói6\u009au\u000e\u0093\u008d¤åK´\u009am&qѦRé´Òi\u0096¥i¤Õ«\u0014ò5¦\u0093O\"òm4\u009am4\u009bC¦qibÚLô\u0093ÉÆÓ)6\u0092í&[I6\u009ci±ÆÃ\u0096\u0093M¬Ì;0ÜÇ\nÛPæ\u009bI4Úe*ñY*×).\\i6cY¢ÒÍ4ºer\u009bIbÖiÐËY¦³E§\nÍ6ÒO\u0018­rÊV;";
            var o = "";

            foreach( var c in s )
                foreach( var b in Convert.ToString( c, 2 ).PadLeft( 8, '0' ) )
                    o += (char) ( 43 + ( 49 - (int) b ) * 2 );

            return o;
        };

        Console.WriteLine( $" Input: <none>\nOutput: {f()}\n" );

        Console.ReadLine();
      }
   }
}

Phát hành

  • v1.0 - 385 bytes- Giải pháp ban đầu.

Ghi chú

  • không ai

0

05AB1E , 149 byte

•19GÈRÕŸ
pт6½÷Ü;вVåΔĀÈ₄¤Ü³Aʒм5[¦PŠÅøœ^‚₆賦ìóV“LÛ'ßq;αÎΩªî»(2∍©däf×5 V5Ú”gÜ/\^(Ã∊Ƶ!3šÍ3°(§A΄ǝ₂È₅ç£6óàÖCsa*zƒÚ¥Î\ªD¹,n∊ðˆ.ëçPαǝƒ.É∍¯ü₂³Λ‘g∍Θþ“‚œΔи‹•b

Siêu nhàm chán. Chỉ là một số nén. Sử dụng 1cho -0cho +.

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


0

PHP, 276 byte

<?=gzinflate(base64_decode("dVJRFgMgCDoQj/tfb2+boqj9VJohQgQI8rv+D1yHuIIytGLsYh6vwAlYIMS62mVCiWMm56vfHiGOuTwjiMHQEC7OVlkNzzK0LZFTN8l0gavGdX4wOfJDsZpXZS0csig0l13wEsoRlvKzhYHMv+F9MnxaCXHWrC2Kx4UqQ8o4qmgNcsjbzA5lZG7LE6LdNMlt2sRKFpNhk/sL59N6DSMKp4No7vP2QcP0c2XWb6nPblqYfJBfHw=="));

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


0

Ruby , 245 byte

puts"%b"%"28x0lphxjx8ze4uuhtdzo0oebr25amtmuxm62cbit0ibdwjm2sf50clh2ejq0a73ndseo5tove8uqca6nf66bo4abbkg867woh2b435at0o3pddvqmsqp29b6as5bd4eo28xgwkkj607gp66icba1q4n9fc13dltp45j340mpzbc56wsrbb3oejnczsbzfgh82xdi8aku8m4wlmwuxkgy4yaew7pu4p1g".to_i(36)

Đầu ra 0 cho + và 1 cho -.

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


0

Perl, 164 byte

print unpack'b*','-Y²lÍ¢%O
[³bÙ²DËlY®pɱ%§Ò-Y¶deJ-Ki¥%«Õ(O¬eÉòDO¶,Y¶,ÙÂeF[2/ÉcËlI·dÚl9cÃiɲ53Ü;ãPÛ
gÙ,[¦TTët:lÆEK³,]¦NÙFkÓeÍ¢åP³lKòµNSjÜ'

Hexdump:

00000000: 7072 696e 7420 756e 7061 636b 2762 2a27  print unpack'b*'
00000010: 2c27 962d 59b2 6ccd a225 4f96 0d5b b362  ,'.-Y.l..%O..[.b
00000020: d9b2 44cb 966c 59ae 70c9 b125 a7d2 2d59  ..D..lY.p..%..-Y
00000030: b664 8e8b 654a 972d 4b96 69a5 9625 abd5  .d..eJ.-K.i..%..
00000040: 284f ac65 c9f2 444f b62c 59b6 2cd9 c265  (O.e..DO.,Y.,..e
00000050: 8e96 465b 322f c993 63cb 946c 49b7 64da  ..F[2/..c..lI.d.
00000060: 926c 3996 8d63 c369 c9b2 3533 dc0c 3be3  .l9..c.i..53..;.
00000070: 50db 0a67 d992 2c5b a654 8f9a 54eb 9474  P..g..,[.T..T..t
00000080: 3a96 6cc6 9a45 4bb3 2c5d a64e d992 466b  :.l..EK.,].N..Fk
00000090: 960b d39a 65cd a2e5 50b3 6c4b f218 b54e  ....e...P.lK...N
000000a0: 536a dc27                                Sj.'

Giải pháp rõ ràng, nhàm chán: chỉ cần đặt tất cả các bit trong một chuỗi nhị phân, 8 bit cho mỗi byte. Sử dụng 0 cho - và 1 cho +. Tôi sẽ cố gắng để chơi golf này nhiều hơn nữa.


0

Võng mạc , 333 byte


ADG-RMCGHQFDLEM+-FAG-CADGPAKBBLHBCH-EGHJBORGEH-HB-FJOBPRCA+JAG-A+A+NJHQLIB-R+Q-OQPRAGP-HBEH-CGNCDGEH+BCCHQH-PDJCEGOGECDGCPK-FNH-EDLHCRIEELHDELEKE-HLJDDA+LHFGCFADJJBK+-JDCJBI+JCOOLGEDELMCGNAGKBEJKJEGCNCIF+BLECMMCAKLJDFDGCH+-E-JIQDJJNHD¶
R
GF
Q
+C
P
EA
O
CK
N
D-
M
I-A
L
--
K
D+
J
CB
I
A++
H
E+
G
AB
F
-AD
E
C+
D
B+
C
-B
B
-+
A
-++-+-

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

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.