Keluaran Perdana Hall Trinity

38

Berdasarkan pertanyaan Math.SE ini ; nomor yang disalin dari jawaban ini . Nomor awalnya dari video Numberphile , tentu saja.

Tugas Anda adalah untuk menghasilkan nomor utama 1350 digit berikut:

888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888111111111111111111111111888888111111111111111111111111888888111111811111111118111111888888111118811111111118811111888888111188811111111118881111888888111188811111111118881111888888111888811111111118888111888888111888881111111188888111888888111888888111111888888111888888111888888888888888888111888888111888888888888888888111888888111888888888888888888111888888811188888888888888881118888188811188888888888888881118881188881118888888888888811188881118888111888888888888111888811111888811118888888811118888111111188881111111111111188881111111118888111111111111888811111111111888811111111118888111111111111188881111111188881111111111111118888811118888811111111111111111888881188888111111111111111111118888888811111111111111111111111888888111111111111111111111111118811111111111111111111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

Anda dapat menyertakan baris baru dalam output.

Aturan

  • Ini adalah , jadi tidak ada input.
  • Program Anda harus berakhir dalam satu jam di komputer standar - jika sudah dekat, saya akan menggunakan program saya untuk pengujian. Jika program Anda berjalan lebih dari satu menit, atau tidak berakhir pada TIO, harap sertakan waktu di komputer Anda.
  • Ini adalah , jadi kode terpendek, dalam byte, menang.
Stephen
sumber
3
"nomor awalnya dari video numberphile" saya pikir ini berasal dari profesor mckee: P
undergroundmonorail
Bagaimana dengan prime ini ?
sergiol

Jawaban:

31

Jelly , 74 71 69 68 66 byte

“©ạ-3ṗÇñ"ỤḍV8żṢ?ḤsMVE[,Ṃƭ"ḞÇsẇʂ(ụFsẠʂẆŀṣ’ḃ19ĖŒṙị⁾81s30m0Z062 ȷ446‘

Cobalah online!

Bagaimana itu bekerja

Literal tersebut “©ạ-3ṗÇñ"ỤḍV8żṢ?ḤsMVE[,Ṃƭ"ḞÇsẇʂ(ụFsẠʂẆŀṣ’menggantikan semua karakter dengan poin kode mereka di halaman kode Jelly dan menafsirkan hasilnya sebagai nomor (basis) 250-bijective, menghasilkan bilangan bulat berikut.

103877200905186099028820568168804302565394743652609510039112658230540917082292838565138059974

Kemudian, ḃ19ubah angka ini menjadi basis bijektif 19, menghasilkan array digit berikut.

16,14,18,12,19,11,3,12,5,10,3,14,4,9,3,15,4,8,3,6,6,4,4,7,3,4,10,3,4,6,3,3,12,3,4,5,3,2,14,3,4,4,3,7,9,4,3,4,3,8,9,4,3,3,3,9,8,4,4,2,3,9,8,5,3,2,3,9,8,6,3,1

Sekarang, ĖŒṙsebutkan digit dan lakukan decoding run-length, menghasilkan array berikut.

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,14,14,14,14,14,14,14,14,14,15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,20,20,20,20,20,20,21,21,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,24,24,24,25,25,25,26,26,26,26,27,27,27,27,27,27,27,27,27,27,28,28,28,29,29,29,29,30,30,30,30,30,30,31,31,31,32,32,32,33,33,33,33,33,33,33,33,33,33,33,33,34,34,34,35,35,35,35,36,36,36,36,36,37,37,37,38,38,39,39,39,39,39,39,39,39,39,39,39,39,39,39,40,40,40,41,41,41,41,42,42,42,42,43,43,43,44,44,44,44,44,44,44,45,45,45,45,45,45,45,45,45,46,46,46,46,47,47,47,48,48,48,48,49,49,49,50,50,50,50,50,50,50,50,51,51,51,51,51,51,51,51,51,52,52,52,52,53,53,53,54,54,54,55,55,55,56,56,56,56,56,56,56,56,56,57,57,57,57,57,57,57,57,58,58,58,58,59,59,59,59,60,60,61,61,61,62,62,62,62,62,62,62,62,62,63,63,63,63,63,63,63,63,64,64,64,64,64,65,65,65,66,66,67,67,67,68,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,70,70,70,70,70,70,71,71,71,72

Kemudian, ị⁾81indeks ke string 81 , mengganti angka ganjil dengan karakter 8 , angka genap dengan karakter 1 . Setelah itu, s30bagi hasil menjadi potongan-potongan dengan panjang 30. Menampilkan satu potongan per baris, hasilnya terlihat sebagai berikut.

888888888888888811111111111111
888888888888888888111111111111
888888888888888888811111111111
888111111111111888881111111111
888111111111111118888111111111
888111111111111111888811111111
888111111888888111188881111111
888111188888888881118888111111
888111888888888888111888811111
888118888888888888811188881111
888111111188888888811118881111
888111111118888888881111888111
888111111111888888881111888811
888111111111888888881111188811
888111111111888888881111118881

Sekarang, m0gabungkan array bongkahan dengan salinan dirinya yang terbalik. Setelah itu, Zritsleting hasilnya, transpos baris dan kolom.

888888888888888888888888888888
888888888888888888888888888888
888888888888888888888888888888
888111111111111111111111111888
888111111111111111111111111888
888111111811111111118111111888
888111118811111111118811111888
888111188811111111118881111888
888111188811111111118881111888
888111888811111111118888111888
888111888881111111188888111888
888111888888111111888888111888
888111888888888888888888111888
888111888888888888888888111888
888111888888888888888888111888
888811188888888888888881118888
188811188888888888888881118881
188881118888888888888811188881
118888111888888888888111888811
111888811118888888811118888111
111188881111111111111188881111
111118888111111111111888811111
111111888811111111118888111111
111111188881111111188881111111
111111118888811118888811111111
111111111888881188888111111111
111111111118888888811111111111
111111111111888888111111111111
111111111111118811111111111111
111111111111111111111111111111

0adalah nilad yang tidak dapat diparsing, sehingga hasil dari sebelumnya dicetak (tanpa jeda baris) dan nilai kembali diatur ke 0 .

62adalah nilad yang tidak dapat diparsing, sehingga hasil dari sebelum ( 0 ) dicetak dan nilai pengembalian diatur ke 62 .

ȷ446adalah nilad yang tidak dapat dipecahkan. 62 dicetak dan nilai kembali diatur ke 10 446 .

Akhirnya, tambahkan hasilnya. Hasil akhir ( 10 446 +1 ) dicetak saat program selesai.

Dennis
sumber
ooo keren tolong tambahkan penjelasan: D
HyperNeutrino
@HyperNeutrino berdasarkan pada output (tetapi dengan kurangnya pengetahuan Jelly saya), ada beberapa mirroring yang terjadi atau sesuatu seperti itu
Stephen
1
@Stephen Yah maksud saya pertama itu beberapa angka mewah dan kemudian konversi menjadi "sesuatu dasar bijective" (apa pun artinya, saya akan mencari tahu itu), dan kemudian menghitung, dan kemudian run-length, dan kemudian indeks ke [8, 1]... Oh, itu pintar! Saya mencuri trik ini. Saya harap Anda tidak keberatan :))) dan kemudian ya tambahkan semua barang-barang aneh 06210..01. bagus :)
HyperNeutrino
2
@HyperNeutrino Menambahkan penjelasan.
Dennis
Dipilih sebagai "grafis" saja. Ini sangat manis, seandainya saya mengerti Jelly :)
pinkfloydx33
7

SOGL V0.12 , 81 78 75 73 byte

$!╚Qαūπōθ(└↓Υ8Π⁶!√|ΠΚψ░⅜Υ‛⁷>∙↓ts3]δεΧ‰“8«─'½Κ81¹¹I⌡_¹◄ø∑'¹n╬³0621"η“⌡01⁰∑

Coba Di Sini!

Penjelasan:

...“                 push a big number of the RLE lengths of the top part
    8«─              convert from base 10 to base 16 (15 was the max length, and making it base 15 wasn't worth it)
       '½Κ           prepend to the array 48
          81¹        push [8, 1]
             ¹       wrap those two in an array
              I      rotate clockwise, resulting in [[8, 48], [1, 2], [8, 9], [1, 12], ...]
               ⌡_¹   flatten (iterate over, splat current items contents on stack, collect the contents in an array)
                  ◄  run-length decode

ø∑                   join as a string
  '¹n                split into lines of length 15
     ╬³              palindromize horizontally with no overlap
       0621          push 0, 6, 2, and 1
           "η“       push 445
              ⌡      that many times do
               0       push 0
                1    push 1
                 ⁰∑  join the stack together in a string
dzaima
sumber
6

Jelly , 136 byte

“ßṪṭAƭẠvµM⁾ṖOḥ⁻Ɠ×Ṣ~*pṭẒFỵṿ¦4ÇḟọLÑOcKɲ⁶2*Ḣɲ’b45;@€1ẋ/€ø“Œ\⁴rrNỊġ:,xƙŒ#ṠƲQçḷĠ%&⁻ɼiḂŀB<Ȧƈg(Ṇb>TḥḄ|ḃṘƬ#l7ƇØṃ’b94;@€8ẋ/€ðżF;0;6;2;1;0ẋ445¤;1Ḍ

Cobalah online!

Penjelasan (angka disingkat)

“ßṪṭ...*Ḣɲ’b45;@€1ẋ/€ø“Œ\⁴...ƇØṃ’b94;@€8ẋ/€ðżF;0;6;2;1;0ẋ445¤;1Ḍ  Main link
“ßṪṭ...*Ḣɲ’b45;@€1ẋ/€                                             Run-length encoded 1s
“ßṪṭ...*Ḣɲ’                                                      The base-45 encoding of the list of the run-lengths of 1s
           b45                                                    in base 45
                €                                                 For each element
              ;@                                                  prepend
                 1                                                1
                    €                                             For each sublist
                   /                                              Reduce over
                  ẋ                                               Repeat list (this gets a bunch of lists of 1s)
                     ø“Œ\⁴...ƇØṃ’b94;@€8ẋ/€                       Run-length encoded 8s
                      “Œ\⁴...ƇØṃ’                                 The base-94 encoding of the list of the run-lengths of 8s
                                 b94                              in base 94
                                      €                           For each element
                                    ;@                            prepend
                                       8                          8
                                          €                       For each sublist
                                         /                        Reduce over
                                        ẋ                         Repeat list (this gets a bunch of lists of 8s)
                                           ðżF;0;6;2;1;0ẋ445¤;1Ḍ  With both of the previous lists of lists, construct the final string
                                            ż                     Interleave them
                                             F                    Flatten it
                                              ;0                  Append 0
                                                ;6                Append 6
                                                  ;2              Append 2
                                                    ;1            Append 1
                                                      ;           Append
                                                       0ẋ445¤     (Nilad)
                                                       0          0
                                                        ẋ445      445 times
                                                             ;1   Append 1
                                                               Ḍ  Convert decimal digits to a number

-121 byte berkat Dennis yang menggunakan “...’literal alih-alih angka normal

HyperNeutrino
sumber
“...’literal menyimpan banyak byte. tio.run/…
Dennis
@ Dennis Oh ya ampun itu bahkan lebih tidak dapat dibaca. Indah! Terima kasih! : D
HyperNeutrino
0;6;2;1;tampaknya sangat bertele-tele.
Magic Octopus Urn
@ MagicOctopusUrn Ya saya mungkin bisa mempersingkatnya sedikit; Saya akan melihat ke suatu saat: P
HyperNeutrino
6

Jelly ,  133 84  73 byte

“÷iþṃL7[ḲʂƘⱮ=ƬƤ¬`RẹŀẹY÷n£ị€ıø&ḟ"gPƲ_ÇḊṪ’b⁴48;ĖŒṙḂ×7‘s15m€0F;“¡©£¢‘Ḍ×ȷ446‘

Cobalah online! (footer memformat angka desimal dengan dimensi yang menghasilkan lambang).

Bagaimana?

Bentuk jangka panjang yang disandikan dari format biner sisi kiri lambang 8dan 1hingga baris sebelum yang mulai 0621tercermin dengan yang 0621ditambahkan dan kemudian dikalikan dengan 10 446 dan bertambah.

“...’b⁴48;ĖŒṙḂ×7‘s15m€0F;“¡©£¢‘Ḍ×ȷ446‘ - Link: no arguments
“...’                                  - base 250 number
     b⁴                                - to base 16
       48;                             - prepend a 48
          Ė                            - enumerate [[1,48],[2,12],[3,3],[4,12],[5,3],...
           Œṙ                          - run-length decode (48 1s then 12 2s then ...)
             Ḃ                         - modulo by 2 (vectorises) evens->0 odds->1
              ×7                       - multiply by 7 (vectorises)
                ‘                      - increment (vectorises) - now all 8s and 1s
                 s15                   - split into chunks of length 15
                    m€0                - reflect each chunk
                       F               - flatten
                         “¡©£¢‘        - code-page indices = [0,6,2,1]
                        ;              - concatenate
                               Ḍ       - from decimal list to number
                                 ȷ446  - 10^446
                                ×      - multiply
                                     ‘ - increment
Jonathan Allan
sumber
5

Arang , 107 104 98 96 87 79 byte

E³⁰✂”}∧Pt→8⌕LJε`‽∨↑¬KαfGⅉKMκ⎆wp◧⪫⊘^≦#⁸¹"π✂×OγX‹nI”×ι¹⁵×⊕ι¹⁵‖CM²⁸←621M²⁵¦¹⁴1UB0

Cobalah online! Tautan ke kode verbose untuk penjelasan

Khusus ASCII
sumber
4

Proton , 368 byte

s=(map("8"&(*),[93,6,6,1,1,6,2,2,6,3,3,6,3,3,6,4,4,6,5,5,6,6,6,6,18,6,18,6,18,7,16,4,3,16,3,4,14,4,4,12,4,4,8,4,4,4,4,4,4,4,4,4,5,5,5,5,8,6,2]),map("1"&(*),[24,24,6,10,6,5,10,5,4,10,4,4,10,4,3,10,3,3,8,3,3,6,3,3,3,3,3,3,3,3,3,1,3,3,2,3,3,3,3,3,5,4,4,7,14,9,12,11,10,13,8,15,4,17,2,20,23,26,44]))
q=''.join(s[0][i]+s[1][i]for i:0..len(s[0]))
print(q+'0621'+'0'*445+'1')

Cobalah online!

HyperNeutrino
sumber
4

Ruby , 180 byte

s=0;"".unpack('H*')[0].split(?f).map{|a|a.chars.map{|c|s^=2**c.to_i(16)};t=("%015b"%s).gsub ?0,?8;$><<t+t.reverse};puts'0621'+?0*445+?1

Cobalah online!

178 byte + 2 byte untuk -Kn(memaksa pengkodean ASCII.)

43 sebagian besar karakter yang tidak dapat dicetak di antara kutipan pertama. Hexdump:

00000000: 733d 300a 22ff f012 3456 789a bff5 f6f7  s=0."...4Vx.....
00000010: ff8f 4f3f 012f ff8b fef7 af69 df45 8cf0  ..O?./.....i.E..
00000020: 1237 bf6a f59f 48f2 37f1 6f04 5f3f 12f0  .7.j..H.7.o._?..
00000030: 222e 756e 7061 636b 2827 482a 2729 5b30  ".unpack('H*')[0
00000040: 5d2e 7370 6c69 7428 3f66 292e 6d61 707b  ].split(?f).map{
00000050: 7c61 7c61 2e63 6861 7273 2e6d 6170 7b7c  |a|a.chars.map{|
00000060: 637c 735e 3d32 2a2a 632e 746f 5f69 2831  c|s^=2**c.to_i(1
00000070: 3629 7d3b 743d 2822 2530 3135 6222 2573  6)};t=("%015b"%s
00000080: 292e 6773 7562 203f 302c 3f38 3b24 3e3c  ).gsub ?0,?8;$><
00000090: 3c74 2b74 2e72 6576 6572 7365 7d0a 7075  <t+t.reverse}.pu
000000a0: 7473 2730 3632 3127 2b3f 302a 3434 352b  ts'0621'+?0*445+
000000b0: 3f31                                     ?1

Bagaimana?

Semua orang melakukan pengkodean run length, jadi saya ingin mencoba sesuatu yang berbeda.

Versi "gambar" yang diformat dari prime dapat dipisahkan menjadi dua bagian - kotak 30x30 dari 8 dan 1, dan bagian kedua sebagian besar nol yang dapat dikodekan dengan keras. Berfokus pada bagian pertama, kami mengamati bahwa bagian tengahnya simetris, jadi jika kami dapat menghasilkan setengah bagian kiri maka kami hanya dapat mencetak setengah dari setiap baris dengan terbalik.

Setengah dari satu baris adalah 15 karakter. Jika kita mengganti angka 8 dengan nol, setiap baris dapat diartikan sebagai angka biner 15-bit. Mudahnya, sebagian besar jarak edit antara setiap baris berturut-turut kecil, jadi saya memutuskan untuk mengimplementasikan solusi saya dengan menyimpan baris pertama s( 888888888888888, yang hanya menjadi 0) dan menerapkan serangkaian operasi pembalikan bit padas , mencetak hasilnya setiap kali .

Karena setiap baris memiliki panjang 15 bit, saya menyandikan operasi ini sebagai digit heksadesimal - misalnya, jika operasinya adalah b(atau 11), maka kami membalik bit 11. Beberapa baris berbeda lebih dari satu bit, sehingga mereka memerlukan string heksadesimal digit. Kami memiliki satu bit tersisa ( f) sehingga kami dapat menggunakannya sebagai pembatas antara string ini, dan juga sebagai nilai "tidak melakukan apa-apa". Contoh di bawah ini (Anda dapat melihat baris ini di pos yang dirujuk dalam pertanyaan):

Line 3: 000000000000000
Line 4: 000111111111111  <-- flip bits 0 through b
Line 5: 000111111111111  <-- do nothing
Line 6: 000111111011111  <-- flip bit 5

Untuk menyatukan semua itu, kita akan menyandikan 0123456789ab, lalu berpisah dengan f, tidak melakukan apa-apa f, lalu 5. Ini berfungsi karena kita akan melakukan .split(?f)nanti untuk mendapatkan setiap rangkaian operasi dengan baris, yang akan menghasilkan ["0123456789ab", "", "5"], dan ""akan menjadi no-op.

Perbedaan antara baris 3 dan 4 di atas sejauh ini merupakan suntingan terpanjang, dan jarak edit antara dua baris berturut-turut biasanya 0-2, jadi saya akan mengatakan bahwa pengkodean ini cukup murah, meskipun saya yakin itu bisa ditingkatkan.

Seluruh string yang dikodekan akhirnya menjadi fff0123456789abff5f6f7ff8f4f3f012fff8bfef7af69df458cf01237bf6af59f48f237f16f045f3f12f0 (86 byte), yang akan mendapatkan seluruh grid 30x30. Tapi kita belum selesai ...

Digit heksadesimal dapat diwakili oleh 4 bit ( b-> 1100, dll.) Itu berarti bahwa jika kita bersedia untuk mengkodekan string kita 4 bit sekaligus daripada menggunakan byte, kita dapat memotong panjang string menjadi dua. Jadi itulah yang saya lakukan - hexdump menunjukkan string yang diwakili dalam 43 byte. Setelah itu, tinggal menggunakan String # unpack dengan Ruby yang bagus H*(diartikan sebagai hex string, high nibble first) untuk memperluas string 43-byte ke versi 86-byte yang kita kenal dan cintai, dan mengulangi setiap rangkaian operasi flipping bits - untuk string yang disimpan sdan operasi yang ckami lakukans ^ 2**c.to_i(16) untuk membalik bit yang sesuai.

Setelah setiap set pengeditan selesai, kami pad biner yang dihasilkan menjadi 15 bit, alihkan semua kembali 0 ke 8, dan cetak hasilnya dan kebalikannya. Seperti disebutkan sebelumnya, bagian dari angka setelah kisi 30x30 dapat di-hardcode, jadi kami melakukannya puts'0621'+?0*445+?1.

String yang disandikan akhir tidak memiliki kemungkinan untuk bekerja pada TIO, jadi versi TIO menggunakan escapes, yang masih berfungsi tetapi lebih lama.

Camilan
sumber
3

Python 2 , 760 523 329 205 196 byte

-237 bytes terima kasih kepada Stephen. -124 bytes berkat Jonathan Frech.

print''.join((ord(j)-34)*'81'[i%2]for i,j in enumerate(":(:((#,#(('$,$'(&%,%&(&%,%&(%&,&%(%'*'%(%(((%(%4%(%4%(%4%)%2%&#%%2%%$&%0%&%&%.%&'&&*&&)&0&+&.&-&,&/&*&1'&'3'$'6*9(<$N"))+'0621'+'0'*445+'1'

Cobalah online!

benar-benar manusiawi
sumber
526 bytes dengan mendeklarasikan variabel untuk 8dan 1dan menggabungkan621
Stephen
Oh XD Saya baru saja mengotomatiskannya, jadi saya tidak melihat 621. Terima kasih!
totallyhuman
2
205 byte dengan mengompresi daftar. Beberapa lagi jika Anda hanya ingin menggunakan byte yang bisa dicetak.
Jonathan Frech
2

CJam, 532 412 340 231 210 209 byte

". $ MBZp & 8OIoLs7Rv / BEqN # 1r ~ E $ O% 6 ^ UO = \ z: (Iw] l \ LQ.g.aWf + {2; on | YP'y $: Lc $ i $ GMCg & mRs # y0 * z` Z, C | Hf6; b / o-0 | FNK5R: OIi} {'`CJ} LOXMSA, & vzl5scm5y0 {om = A _ # / wF"' # fm92bs: A; "6NLkB) h% @ {u`hp_v + YK "'# fm92bYb2f + {[A / (\ s: A;)]}% e ~' 0445 * 1

Cobalah secara Online

Pengkodean run-length diperluas dari basis 92 (Basis 250 menyebabkan karakter multibyte sehingga harus menyesuaikan). Juga, 4341089843357287864910309744850519376diperluas dari basis 92 dan dikonversi ke biner. A 1 berarti run-length adalah dua digit, 0 berarti itu satu digit. Sebagai contoh, 4 digit pertama dari representasi biner adalah 1101 karena empat run pertama adalah [93,8],[24,1],[6,8],[24,1](93 8, 24 1, dll ...)

geokavel
sumber
2

JavaScript, 454 450 332 207 204 byte

-4 byte terima kasih kepada Stephen. -125 byte berkat Shaggy dan Dom Hastings.

_=>[...`]






,`].map((j,i)=>'81'[i%2].repeat(j.charCodeAt())).join``+0+621+"0".repeat(445)+1

Ada banyak muatan yang tidak terpecahkan dalam jawaban ini, jadi inilah hexdump:

00000000: 5f3d 3e5b 2e2e 2e60 5d18 0618 0606 010a  _=>[...`].......
00000010: 0106 0605 020a 0205 0604 030a 0304 0604  ................
00000020: 030a 0304 0603 040a 0403 0603 0508 0503  ................
00000030: 0603 0606 0603 0603 1203 0603 1203 0603  ................
00000040: 1203 0703 1003 0401 0303 1003 0302 0403  ................
00000050: 0e03 0403 0403 0c03 0405 0404 0804 0407  ................
00000060: 040e 0409 040c 040b 040a 040a 0408 040f  ................
00000070: 0504 0511 0502 0514 0817 061a 022c 605d  .............,`]
00000080: 2e6d 6170 2828 6a2c 6929 3d3e 2738 3127  .map((j,i)=>'81'
00000090: 5b69 2532 5d2e 7265 7065 6174 286a 2e63  [i%2].repeat(j.c
000000a0: 6861 7243 6f64 6541 7428 2929 292e 6a6f  harCodeAt())).jo
000000b0: 696e 6060 2b30 2b36 3231 2b22 3022 2e72  in``+0+621+"0".r
000000c0: 6570 6561 7428 3434 3529 2b31            epeat(445)+1

f=
_=>[...`]






,`].map((j,i)=>'81'[i%2].repeat(j.charCodeAt())).join``+0+621+"0".repeat(445)+1

document.write(f())

benar-benar manusiawi
sumber
Saya percaya mengembalikan nilai dari suatu fungsi akan valid.
Stephen
Oh, benar, terima kasih. Bisakah Anda juga melakukan bagian HTML? : PI serius tidak tahu banyak tentang ini, saya hanya memilih JS karena ganti regex rapi. EDIT : Terima kasih. : D
totallyhuman
Anda dapat meniadakan tanda kutip sekitar yang terakhir +'1'karena sudah menjadi Stringdan +'0621'bisa +0+621!
Dom Hastings
1
222 byte - Yang terakhir, aku janji!
Shaggy
3
[...`]membuat saya sangat marah
ETHproduksi
2

JavaScript (ES6), 206 205 204 203 198 197 194 byte

Datang dengan ini saat bekerja pada solusi i cri everytim , pikir itu cukup berbeda untuk menjamin posting itu sendiri.

Ini termasuk beban dari unsintables antara ]dan ,karenanya ikuti tautan TIO di bawah ini untuk melihatnya dengan Unicode escapes (setiap urutan \udiikuti dengan 4 digit dihitung sebagai 1 byte).

_=>`],0621ƽ1`.replace(/\D/g,(x,y)=>"810"[y<122?y&1:2].repeat(x.charCodeAt()))

Cobalah online

Shaggy
sumber
2

MATLAB / Oktaf , 319 318 byte

Ini adalah upaya pertama saya untuk tantangan ini. Masih agak besar dan mungkin ada cara yang lebih efisien untuk melakukannya, tapi saya pikir saya tetap akan mempostingnya karena metode ini lebih menarik daripada sekadar meng-zip.

for i=reshape('|871%871%8%1 8)1 8%1%8$1!8)1!8$1%8#1"8)1"8#1%8#1"8)1"8#1%8"1#8)1#8"1%8"1$8''1$8"1%8"1%8%1%8"1%8"118"1%8"118"1%8"118"1&8"1/8"1#8 1"8"1/8"1"8!1#8"1-8"1#8"1#8"1+8"1#8$1#8#1''8#1#8&1#8-1#8(1#8+1#8*1#8)1#8,1#8''1#8.1$8#1$801$8!1$831''861%891!8K1 0 6 2 1~0~0~0~0`0 1',2,[]);fprintf(repmat(i(2),1,i(1)-31));end

Cobalah online!

Metode yang digunakan di sini adalah dengan menggunakan skema Run-Length-Encoding.

Kami mulai dengan nomor asli dan menghitung jumlah digit berturut-turut. Ini ditulis dalam hasil di bawah ini sebagai penghitungan diikuti secara langsung oleh digit (ruang dipisahkan untuk kejelasan).

938 241 68 241 68 61 8 101 8 61 68 51 28 101 28 51 68 41 38 101 38 41 68 41 38 101 38 41 68 31 48 101 48 31 68 31 58 81 58 31 68 31 68 61 68 31 68 31 188 31 68 31 188 31 68 31 188 31 78 31 168 31 48 1 38 31 168 31 38 21 48 31 148 31 48 31 48 31 128 31 48 51 48 41 88 41 48 71 48 141 48 91 48 121 48 111 48 101 48 131 48 81 48 151 58 41 58 171 58 21 58 201 88 231 68 261 28 441 0 6 2 1 4450 1

Jika salah satu nilai lebih besar dari 95, kami memecahnya menjadi beberapa potongan 95 atau kurang - ini hanya terjadi untuk 445 0 yang sebaliknya menjadi empat set 95 0 dan satu set 65 0. Kami juga menghitung jumlah yang kurang dari 10 dengan 0 untuk membuat semua elemen panjang tiga karakter. Ini menghasilkan dengan ruang yang dihapus:

938241068241068061018101018061068051028101028051068041038101038041068041038101038041068031048101048031068031058081058031068031068061068031068031188031068031188031068031188031078031168031048011038031168031038021048031148031048031048031128031048051048041088041048071048141048091048121048111048101048131048081048151058041058171058021058201088231068261028441010016012011950950950950650011

Kalau dipikir-pikir pada titik ini saya bisa melakukan langkah ini sebelum menggabungkan semuanya, tetapi bagaimana Anda hidup dan belajar. Kami melakukan sesuatu yang pintar yaitu mengambil hitungan untuk setiap grup (2 digit) dan kami menambahkan 31. Karena semuanya adalah <96, angka yang dihasilkan adalah nilai ASCII untuk karakter yang dapat dicetak (32 hingga 126). Memberi kami jumlah:

|7%7%% ) %%$!)!$%#")"#%#")"#%"#)#"%"$'$"%"%%%"%"1"%"1"%"1"&"/"# ""/""!#"-"#"#"+"#$##'##&#-#(#+#*#)#,#'#.$#$0$!$3'6%9!K    ~~~~` 

Setelah sedikit membentuk kembali di MATLAB untuk membuatnya lebih menguntungkan untuk decoding, dan kemudian juga melarikan diri 'karakter dengan ''(jika tidak, MATLAB membagi string string di sana), kita dibiarkan dengan string pintar:

|871%871%8%1 8)1 8%1%8$1!8)1!8$1%8#1"8)1"8#1%8#1"8)1"8#1%8"1#8)1#8"1%8"1$8''1$8"1%8"1%8%1%8"1%8"118"1%8"118"1%8"118"1&8"1/8"1#8 1"8"1/8"1"8!1#8"1-8"1#8"1#8"1+8"1#8$1#8#1''8#1#8&1#8-1#8(1#8+1#8*1#8)1#8,1#8''1#8.1$8#1$801$8!1$831''861%891!8K1 0 6 2 1~0~0~0~0`0 1

Itu adalah akar kode. Dalam kode yang kemudian saya lakukan adalah membentuk kembali array menjadi string 2D dengan 128 pasang karakter. Untuk setiap pasangan, karakter pertama dikurangi 31, dan kemudian karakter kedua ditampilkan berulang kali.

Hasilnya adalah prime asli:

888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888111111111111111111111111888888111111111111111111111111888888111111811111111118111111888888111118811111111118811111888888111188811111111118881111888888111188811111111118881111888888111888811111111118888111888888111888881111111188888111888888111888888111111888888111888888111888888888888888888111888888111888888888888888888111888888111888888888888888888111888888811188888888888888881118888188811188888888888888881118881188881118888888888888811188881118888111888888888888111888811111888811118888888811118888111111188881111111111111188881111111118888111111111111888811111111111888811111111118888111111111111188881111111188881111111111111118888811118888811111111111111111888881188888111111111111111111118888888811111111111111111111111888888111111111111111111111111118811111111111111111111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

Suntingan:

  • menata ulang string sihir sehingga aku bisa menyingkirkan transpos setelah membentuk kembali. Menghemat satu byte.
Tom Carpenter
sumber
2

05AB1E , 76 byte

•ŒÆÿ¹т£Ƶ‘β\,ä¸γλaXë«Š¸þaγG(žÃÇ…»šKþÈ/?`'•20BS20öDg81s∍Ss×J30ôø.∞0D445×621s1J

Cobalah online!


Mencuri ini dari Dennis:

888888888888888811111111111111
888888888888888888111111111111
888888888888888888811111111111
888111111111111888881111111111
888111111111111118888111111111
888111111111111111888811111111
888111111888888111188881111111
888111188888888881118888111111
888111888888888888111888811111
888118888888888888811188881111
888111111188888888811118881111
888111111118888888881111888111
888111111111888888881111888811
888111111111888888881111188811
888111111111888888881111118881

Melihatnya selalu bergantian antara 8 dan 1, jadi saya menghitung panjang setiap lari (Basis 20):

['G', 'E', 'I', 'C', 'J', 'B', '3', 'C', '5', 'A', '3', 'E', '4', '9', '3', 'F', '4', '8', '3', '6', '6', '4', '4', '7', '3', '4', 'A', '3', '4', '6', '3', '3', 'C', '3', '4', '5', '3', '2', 'E', '3', '4', '4', '3', '7', '9', '4', '3', '4', '3', '8', '9', '4', '3', '3', '3', '9', '8', '4', '4', '2', '3', '9', '8', '5', '3', '2', '3', '9', '8', '6', '3', '1']

Bergabung bersama semuanya, dan mengubahnya menjadi basis-10 integer:

3954184379309026812828704944878416720438306456270310298603957651230861078960874182787979106461

Dikompresi lebih jauh ke base-255:

ŒÆÿ¹т£Ƶ‘β\,ä¸γλaXë«Š¸þaγG(žÃÇ…»šKþÈ/?`'

Kemudian, setelah membuat bit terkompresi ... Kita hanya perlu memanipulasinya kembali ke aslinya ..

20B                                 # Back to base 20.
   S                                # Each char separate...
    20ö                             # As their base 10 values...
       Dg81s∍                       # Extend '81' to the length of the array.
             Ss×J                   # Push that many 8 or 1's as told by the array.
                 30ôø.∞             # Split by the symmetrical pattern, flip it, mirror.
                       0D445×621s1  # Create the part that doesn't fit into a pattern.
                                  J # Join whole stack together.

Hasil akhir:

88888888888888888888888888888
88888888888888888888888888888
88888888888888888888888888888
88811111111111111111111111888
88811111111111111111111111888
88811111181111111118111111888
88811111881111111118811111888
88811118881111111118881111888
88811118881111111118881111888
88811188881111111118888111888
88811188888111111188888111888
88811188888811111888888111888
88811188888888888888888111888
88811188888888888888888111888
88811188888888888888888111888
88881118888888888888881118888
18881118888888888888881118881
18888111888888888888811188881
11888811188888888888111888811
11188881111888888811118888111
11118888111111111111188881111
11111888811111111111888811111
11111188881111111118888111111
11111118888111111188881111111
11111111888881118888811111111
11111111188888188888111111111
11111111111888888811111111111
11111111111188888111111111111
11111111111111811111111111111
11111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
Guci Gurita Ajaib
sumber
2

C (gcc) , 277 byte

Saya mendapatkan perasaan bahwa string dapat dipersingkat entah bagaimana.

#define F(c,n)for(c=0;c<n;c++)
i,j,k;r(d,n){F(k,n)printf("%d",d);}f(){r(8,90);F(i,128)F(j,6)r(("8111i8111i8915i8=1=i8?1Mi8?1Mi8@1mi8P1oi8p1pi8pppi8pppi8pppi@opPm?opPMOmp@Omip8@iRpR8a41a4Q81i21@1m11O1O11mR@11id811Qp2111p1111="[i]-49>>j)&1?8:1,1);r(1,42);printf("0621%0446d",1);}

Cobalah online!

gastropner
sumber
1

Perl 5 , 307 byte

$d=1;print((map{($d^=9)x$_}(93,24,6,24,6,6,1,10,1,6,6,5,2,10,2,5,6,4,3,10,3,4,6,4,3,10,3,4,6,3,4,10,4,3,6,3,5,8,5,3,6,3,6,6,6,3,6,3,18,3,6,3,18,3,6,3,18,3,7,3,16,3,4,1,3,3,16,3,3,2,4,3,14,3,4,3,4,3,12,3,4,5,4,4,8,4,4,7,4,14,4,9,4,12,4,11,4,10,4,13,4,8,4,15,5,4,5,17,5,2,5,20,8,23,6,26,2,44)),0,621,0 x445,1)

Cobalah online!

Xcali
sumber
1

Bubblegum , 88 byte

00000000: edc9 310a 0250 10c4 d02b fdb1 90dc ff64  ..1..P...+.....d
00000010: 96c1 80a2 8885 60aa d97d 7cb3 3de8 75c5  ......`..}|.=.u.
00000020: 37ab 820a 51ee 9537 942a 55c4 aaec 76b4  7...Q..7.*U...v.
00000030: cfb5 1cdc 33dd 908b ac1c 74a0 894e 03c8  ....3.....t..N..
00000040: 11cc 99ab 9c1d c661 32c5 bad6 8aad 96d2  .......a2.......
00000050: b95e 76fe fd6e bb01                      .^v..n..

Cobalah online!

Dom Hastings
sumber
1

Ruby , 194 byte

$><<?8+"~:(:((#,#(('$,$'(&%,%&(&%,%&(%&,&%(%'*'%(%(((%(%4%(%4%(%4%)%2%&#%%2%%$&%0%&%&%.%&'&&*&&)&0&+&.&-&,&/&*&1'&'3'$'6*9(<$N".bytes.reduce(""){|s,x|s+(s[-1]==?8??1:?8)*(x-34)}+"0621"+?0*445+?1

Bagian atas adalah RLE-encoded, sisanya hanya hardcoded.

Cobalah online!

GB
sumber
1

Kotlin , 339 byte

val s="8J188J1888138<13881887148<14871886158<15861886158<15861885168<16851885178:178518851888188518851D8518851D8518851D8519851B85168315851B85158416851@85168516851>85168716861:861689168@168;168>168=168<168?168:168A1786178C1784178F1:8I188L148^130363231ǯ031"
fun x()=(0..s.length-1 step 2).map{i->(1..(s[i].toInt()-50)).map{print(s[i+1])}}

Cobalah online!

jrtapsell
sumber
1

CJam ( 108 81 byte)

"u{èl>`#ö^½³ó!;kMðSÀËndEyvY3ÉÊÅBà#®"256bFbee{)*~}%"81"f=15/_Wf%zT6Y446,:!1

Demo online

Dalam kasus pengkodean karakter borks di atas, ini adalah xxd-encoded:

0000000: 2275 1e7b e86c 3e60  8d23 80f6 5ebd b3f3  "u.{.l>`.#..^...
0000010: 213b 968d 6b4d f053  c0cb 6e64 1c45 7976  !;..kM.S..nd.Eyv
0000020: 5933 c9ca 8dc5 42e0  23ae 2232 3536 6246  Y3....B.#."256bF
0000030: 6265 657b 292a 7e7d  2522 3831 2266 3d31  bee{)*~}%"81"f=1
0000040: 352f 5f57 6625 7a54  3659 3434 362c 3a21  5/_Wf%zT6Y446,:!
0000050: 31                                        1

Run awal 8s dan 1s dibagi menjadi hanya setengah kiri dan run-length dikodekan hanya sebagai panjang berjalan bergantian. Run lebih dari 24 dibagi menjadi run paling banyak 24, dipisahkan oleh run 0, sehingga panjangnya dapat di-base-25 di-encode dan kemudian base-256 di-encode untuk mengemasnya.

Peter Taylor
sumber
1

JavaScript (ES2017), 287 byte

_=>"00000000000000000027wr2027wr2027a9ko261b7c23jerc23jerc1yjm0o1y8coo1y2ou01xx5q01xx5q01xx5q00yykxc9ull699d4au9dk75xffo1v2fgptj4fh8jrj3hhwvgfhmlev3hour5rhq24n3hqytj3hr4hdrhr8ykfhra0hr".replace(/.{6}/g,n=>parseInt(n,36).toString(2).replace(/0/g,8).padStart(30,8))+0+621+"0".repeat(445)+1

Menggunakan pendekatan yang sedikit berbeda dengan jawaban @icrieverytim . -10 byte berkat saran @Shaggy untuk menggunakan replacealih-alihmatch !

f=
_=>"00000000000000000027wr2027wr2027a9ko261b7c23jerc23jerc1yjm0o1y8coo1y2ou01xx5q01xx5q01xx5q00yykxc9ull699d4au9dk75xffo1v2fgptj4fh8jrj3hhwvgfhmlev3hour5rhq24n3hqytj3hr4hdrhr8ykfhra0hr".replace(/.{6}/g,n=>parseInt(n,36).toString(2).replace(/0/g,8).padStart(30,8))+0+621+"0".repeat(445)+1
;
p.innerHTML=f()
pre{word-wrap:break-word;white-space:normal}
<pre id=p></pre>

Dom Hastings
sumber
1
287 byte .
Shaggy
1

/// , 260 byte

/;/88%//:/1&13%13"//9/\/\///7/"1#95/!!!!94/%""93/8889-/000009,/11#9'/###9&/#88"9%/"""9#/389"/1119!/-----0/'''''''##8%4#;4&"8%18""&11;188"1::1&#%1#"&#8"",8"&&"&&'&&'&&'&#3"'#"#13"'#"3,"##&#"#"'"#",7#7"7%",%#%"#%,%1#%7"",4#8784,8,8%%,#%%",;411;%%41106215555!0001

Cobalah online!

Tidak ada yang sangat menarik, hanya beberapa kompresi.

Conor O'Brien
sumber
1

Mathematica, 192 byte

Uncompress["1:eJxTTMoP8nRjZWCwoCUwxAGIl0VSZIEhi2wEXAgma4Eqa0GCrAW6rAW6rAWyJKYsulPRGGhBRLksNmmYy/HJonkOXStWaeTwgTGQ5JADD4mJTQRdGo2PysUwC1kA0yJDFPdgJjWoKHZJNB/hlMYhaYiaMgkDAzMjQ4NRMHSBIQDgQA6C"]

Lihat: http://reference.wolfram.com/language/ref/Compress.html

Eric Towers
sumber
1

Python 2 , 191 190 188 byte

s='0621'+'0'*445+'1'
a=1
for c in'L":&7(4%"%1%$%/$($-$*$+$,$)$.$\'$$($$%$#,#$#$#.#$"##0##!$#0#\'#2#&#2#&#2#&#&&&#&#%(%#&#$*$#&$#*#$&$#*#$&%"*"%&&!*!&&8&8}':s=`a`*(ord(c)-32)+s;a^=9
print s

Cobalah online!

Prinsipal yang sama dengan jawaban saya di sini

TFeld
sumber