เอาท์พุท Trinity Hall Prime


38

ขึ้นอยู่กับคำถาม Math.SE นี้ ; จำนวนที่คัดลอกมาจากคำตอบนี้ แน่นอนว่ามาจากวิดีโอ Numberphile

งานของคุณคือส่งออกหมายเลขเฉพาะ 1350 หลักต่อไปนี้:

888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888111111111111111111111111888888111111111111111111111111888888111111811111111118111111888888111118811111111118811111888888111188811111111118881111888888111188811111111118881111888888111888811111111118888111888888111888881111111188888111888888111888888111111888888111888888111888888888888888888111888888111888888888888888888111888888111888888888888888888111888888811188888888888888881118888188811188888888888888881118881188881118888888888888811188881118888111888888888888111888811111888811118888888811118888111111188881111111111111188881111111118888111111111111888811111111111888811111111118888111111111111188881111111188881111111111111118888811118888811111111111111111888881188888111111111111111111118888888811111111111111111111111888888111111111111111111111111118811111111111111111111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

คุณอาจเลือกที่จะรวมบรรทัดใหม่ในผลลัพธ์

กฎระเบียบ

  • นี่คือดังนั้นจึงไม่มีอินพุต
  • โปรแกรมของคุณจะต้องสิ้นสุดภายในหนึ่งชั่วโมงในคอมพิวเตอร์มาตรฐาน - ถ้าปิดฉันจะใช้ของฉันเพื่อทำการทดสอบ หากโปรแกรมของคุณทำงานนานกว่านาทีหรือไม่สิ้นสุดใน TIO โปรดระบุเวลาในคอมพิวเตอร์ของคุณ
  • นี่คือดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์ชนะ

3
"number มาจากวิดีโอ numberphile" ฉันคิดว่ามันมาจากศาสตราจารย์ mckee: P
undergroundmonorail

นายกเรื่องนี้เป็นอย่างไร
sergiol

คำตอบ:


31

เยลลี่ , 74 71 69 68 66 ไบต์

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

ลองออนไลน์!

มันทำงานอย่างไร

ตัวอักษร“©ạ-3ṗÇñ"ỤḍV8żṢ?ḤsMVE[,Ṃƭ"ḞÇsẇʂ(ụFsẠʂẆŀṣ’จะแทนที่อักขระทั้งหมดด้วยจุดโค้ดในหน้ารหัสของเยลลี่และตีความผลลัพธ์เป็นตัวเลขฐาน (bijective) -250 ซึ่งให้ผลเป็นจำนวนเต็มต่อไปนี้

103877200905186099028820568168804302565394743652609510039112658230540917082292838565138059974

จากนั้นḃ19แปลงตัวเลขนี้เป็นฐาน bijective 19 เพื่อให้ได้อาร์เรย์หลักต่อไปนี้

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

ตอนนี้ĖŒṙระบุตัวเลขและทำการถอดรหัสการรันความยาวโดยยอมให้มีอาเรย์ต่อไปนี้

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

จากนั้นị⁾81ดัชนีลงในสตริง81เปลี่ยนเป็นเลขคี่กับตัวอักษรที่8จำนวนถึงแม้จะมีตัวละคร1 หลังจากนั้นs30แยกผลลัพธ์ออกเป็นส่วน ๆ ความยาว 30 แสดงหนึ่งชิ้นต่อบรรทัดผลลัพธ์จะมีลักษณะดังนี้

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

ตอนนี้m0เชื่อมชุดของชิ้นส่วนเข้าด้วยกันด้วยสำเนาที่กลับด้าน หลังจากนั้นให้Zซิปผลลัพธ์ส่งผ่านแถวและคอลัมน์

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

0เป็น nilad unparsable ดังนั้นผลจากก่อนที่จะมีการพิมพ์ (โดยไม่แบ่งบรรทัด) และค่าตอบแทนที่ถูกกำหนดเป็น0

62เป็นอีกหนึ่ง nilad unparsable ดังนั้นผลจากก่อน (คน0 ) ถูกพิมพ์และค่าตอบแทนที่ถูกกำหนดเป็น62

ȷ446เป็นอีกหนึ่ง nilad ที่ไม่สามารถแยกวิเคราะห์ได้ 62ถูกพิมพ์และค่าตอบแทนที่ถูกกำหนดเป็น10 446

ในที่สุดเพิ่มผลลัพธ์ ผลลัพธ์สุดท้าย ( 10 446 + 1 ) จะถูกพิมพ์เมื่อโปรแกรมเสร็จสิ้น


ooo cool โปรดเพิ่มคำอธิบาย: D
HyperNeutrino

@HyperNeutrino ตามผลลัพธ์ (แต่ด้วยการขาดความรู้ด้าน Jelly อย่างสมบูรณ์ของฉัน) มันมีการสะท้อนบางอย่างที่เกิดขึ้นหรืออะไรทำนองนั้น
Stephen

1
@ สตีเฟ่นฉันหมายถึงก่อนอื่นมันเป็นเลขแฟนซีแล้วแปลงเป็น "ฐานบางสิ่งบางอย่าง bijective" (อะไรก็ตามที่หมายความว่าฉันจะไปคิดออก) แล้วแจกแจงแล้ววิ่งระยะทางแล้วทำดัชนีให้เป็น[8, 1]... โอ้นั่นคือสมาร์ท! ฉันขโมยเล่ห์อุบายนี้ฉันหวังว่าคุณจะไม่สนใจ :))) แล้วใช่เพิ่มสิ่งแปลกประหลาด 06210..01 ทุกอย่าง nice :)
HyperNeutrino

2
@HyperNeutrino เพิ่มคำอธิบายแล้ว
Dennis

โหวตให้คะแนนสำหรับ "กราฟิก" เพียงอย่างเดียว นี่คือหวานสวยฉันต้องการเข้าใจ Jelly :)
pinkfloydx33

7

SOGL V0.12 , 81 78 75 73 ไบต์

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

ลองที่นี่!

คำอธิบาย:

...“                 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

6

เยลลี่ , 136 ไบต์

“ßṪṭ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Ḍ

ลองออนไลน์!

คำอธิบาย (ตัวเลขสั้นลง)

“ßṪṭ...*Ḣɲ’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 ไบต์ขอบคุณ Dennis ที่ใช้“...’ตัวอักษรแทนตัวเลขปกติ


“...’ตัวอักษรบันทึกพวงของไบต์ tio.run/…
Dennis

@Dennis Oh geez ที่อ่านไม่ออกมากยิ่งขึ้น สวย! ขอบคุณ! : D
HyperNeutrino

0;6;2;1;ดูเหมือนคำฟุ่มเฟือย
Magic Octopus Urn

@ MagicOctopusUrn ใช่ฉันอาจจะสั้นลงเล็กน้อย ฉันจะดูว่าบางครั้ง: P
HyperNeutrino

6

เยลลี่ ,  133 84  73 ไบต์

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

ลองออนไลน์! (ส่วนท้ายจัดรูปแบบตัวเลขทศนิยมด้วยขนาดที่ให้เสื้อคลุมแขน)

อย่างไร?

รูปแบบที่เข้ารหัสความยาววิ่งของรูปแบบไบนารีของด้านซ้ายของตราอาร์ม8และ1จนถึงแถวก่อนที่รูปหนึ่งจะเริ่ม0621สะท้อนด้วยการ0621เพิ่มแล้วคูณด้วย10 446และเพิ่มขึ้น

“...’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


4

โปรตอนขนาด 368 ไบต์

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')

ลองออนไลน์!


4

ทับทิม 180 ไบต์

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

ลองออนไลน์!

178 ไบต์ +2 ไบต์สำหรับ-Kn(บังคับให้เข้ารหัส ASCII)

43 อักขระส่วนใหญ่ที่ไม่สามารถพิมพ์ได้ในระหว่างเครื่องหมายคำพูดแรก 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

อย่างไร?

ทุกคนกำลังทำการเข้ารหัสแบบรันไทม์ดังนั้นฉันต้องการลองสิ่งที่แตกต่าง

นายก "รูปแบบ" ที่จัดรูปแบบแล้วสามารถแยกออกเป็นสองส่วน - ตาราง 30x30 ของ 8 และ 1 และส่วนที่สองของศูนย์ส่วนใหญ่ซึ่งสามารถฮาร์ดโค้ดได้ การมุ่งเน้นไปที่ส่วนแรกเราสังเกตว่ามันมีความสมมาตรตรงกลางดังนั้นถ้าเราสามารถสร้างครึ่งซ้ายได้เราก็สามารถพิมพ์ครึ่งหนึ่งของแต่ละบรรทัดโดยย้อนกลับได้

ครึ่งหนึ่งของหนึ่งบรรทัดมีความยาว 15 อักขระ หากเราแทนที่ค่า 8 ด้วยศูนย์แต่ละบรรทัดสามารถตีความได้ว่าเป็นเลขฐานสอง 15 บิต สะดวกส่วนใหญ่แก้ไขระยะห่างระหว่างแต่ละบรรทัดติดต่อกันมีขนาดเล็กดังนั้นผมจึงตัดสินใจที่จะใช้วิธีการแก้ปัญหาของฉันโดยการจัดเก็บบรรทัดแรกs( 888888888888888ที่เพิ่งจะกลายเป็น 0) และการประยุกต์ใช้ชุดของการดำเนินบิตพลิกบนsพิมพ์ผลที่ได้ในแต่ละครั้ง .

เนื่องจากแต่ละบรรทัดมีความยาว 15 บิตฉันเข้ารหัสการดำเนินการเหล่านี้เป็นเลขฐานสิบหก - ตัวอย่างเช่นถ้าการดำเนินการคือb(หรือ 11) จากนั้นเราพลิกบิต 11 บางบรรทัดแตกต่างกันมากกว่าหนึ่งบิตดังนั้นพวกเขาจึงต้องการสตริงเลขฐานสิบหก ตัวเลข เรามีหนึ่งบิตเหลืออยู่ ( f) เพื่อให้เราสามารถใช้เป็นตัวคั่นระหว่างสตริงเหล่านี้และยังเป็นค่า "ไม่ทำอะไรเลย" ตัวอย่างด้านล่าง (คุณสามารถเห็นบรรทัดเหล่านี้ในโพสต์ที่อ้างอิงในคำถาม):

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

ที่จะนำมารวมกันทั้งหมดที่เราจะเข้ารหัส0123456789abแล้วแยกกับfทำอะไรด้วยแล้วf 5ใช้งานได้เพราะเรากำลังจะทำใน.split(?f)ภายหลังเพื่อรับชุดปฏิบัติการแต่ละรายการซึ่งจะให้ผล["0123456789ab", "", "5"]และ""จะไม่ทำงาน

ความแตกต่างระหว่างบรรทัดที่ 3 และ 4 ข้างต้นนั้นเป็นชุดการแก้ไขที่ยาวที่สุดและระยะทางในการแก้ไขระหว่างสองบรรทัดที่ต่อเนื่องกันคือ 0-2 ดังนั้นฉันจะบอกว่าการเข้ารหัสนี้มีราคาไม่แพงถึงแม้ว่าฉันจะแน่ใจ ได้รับการปรับปรุง

สตริงที่เข้ารหัสทั้งหมดจบลงด้วยการเป็นfff0123456789abff5f6f7ff8f4f3f012fff8bfef7af69df458cf01237bf6af59f48f237f16f045f3f12f0(86 ไบต์) ซึ่งจะได้รับตาราง 30x30 ทั้งหมด แต่เรายังไม่ได้ทำ ...

เลขฐานสิบหกสามารถแทนด้วย 4 บิต ( b-> 1100, ฯลฯ ) ซึ่งหมายความว่าหากเราเต็มใจเข้ารหัสสตริงของเรา 4 บิตในแต่ละครั้งแทนที่จะใช้ไบต์เราสามารถตัดความยาวของสตริงได้ครึ่งหนึ่ง นั่นคือสิ่งที่ฉันทำ - hexdump แสดงสตริงที่แทนด้วย 43 ไบต์ หลังจากนั้นมันเป็นเพียงเรื่องของการใช้รูบี้ดี ๆ ของสตริง # unpackด้วยH*(แปลว่าสตริง hex, ตอดสูงก่อน) เพื่อขยายสตริง 43- ไบต์เป็น 86- ไบต์รุ่นที่เรารู้จักและชื่นชอบและวนรอบชุดการดำเนินการแต่ละชุด พลิกบิต - สำหรับสตริงที่เก็บไว้ของเราsและการดำเนินการที่cเราทำs ^ 2**c.to_i(16)เพื่อพลิกบิตที่สอดคล้องกัน

หลังจากการแก้ไขแต่ละชุดเสร็จสิ้นแล้วเราจะวางไบนารีผลลัพธ์เป็น 15 บิตสลับทั้งหมด 0 ของกลับไปเป็น 8 และพิมพ์ผลลัพธ์และย้อนกลับ ดังที่ได้กล่าวไว้ก่อนหน้านี้ส่วนของตัวเลขหลังจากตาราง 30x30 สามารถ hardcoded ดังนั้นเราจึงทำเช่นputs'0621'+?0*445+?1นั้น

สตริงเข้ารหัสสุดท้ายไม่มีความเป็นไปได้ในการทำงานกับ TIO ดังนั้นรุ่น TIO จึงใช้ Escape ซึ่งยังใช้งานได้ แต่จะนานกว่า


3

Python 2 , 760 523 329 205 196 ไบต์

-237 ไบต์ขอบคุณสตีเฟ่น -124 ไบต์ขอบคุณ 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'

ลองออนไลน์!


526 ไบต์ด้วยการประกาศตัวแปร8และ1และการรวม621
สตีเฟ่น

โอ้ XD 621ฉันเพียงแค่อัตโนมัติมันดังนั้นฉันไม่เห็น ขอบคุณ!
สิ้นเชิงมนุษย์

2
205 ไบต์โดยการบีบอัดรายการ เพิ่มขึ้นอีกเล็กน้อยหากคุณต้องการใช้ไบต์ที่พิมพ์ได้เท่านั้น
Jonathan Frech

2

CJam, 532 412 340 231 210 209 ไบต์

" $ MBZp & 8OIoLs7Rv / BEqN # 1R ~ E $ O% ^ 6 UO = \ Z: (Iw] L \ LQ.g.aWf + {2; บน | YP'y $:. Lc $ i $ GMCg & Mrs # y0 * z` Z, C | Hf6; b / o-0 | FNK5R: OIi} { '`CJ} LOXMSA และ vzl5scm5y0 {OM = a _ # / WF"' # fm92bs: การ; "6NLkB) H% @ {u`hp_v + YK "'# fm92bYb2f + {[A / (\ s: การ;)]} E% ~ 0445 * 1

ลองออนไลน์

การเข้ารหัสความยาวรันไทม์ขยายจากฐาน 92 (ฐาน 250 นำไปสู่ตัวอักษรหลายไบต์ดังนั้นจึงต้องปรับเปลี่ยน) นอกจากนี้ยัง4341089843357287864910309744850519376ขยายจากฐาน 92 และแปลงเป็นไบนารี 1 หมายถึงระยะเวลาในการวิ่งคือสองหลัก, 0 หมายถึงหนึ่งหลัก ตัวอย่างเช่นตัวเลข 4 หลักแรกของการแทนเลขฐานสองคือ 1101 เพราะการทำงานสี่ครั้งแรกคือ[93,8],[24,1],[6,8],[24,1](93 8's, 24 1's, ฯลฯ ... )


2

JavaScript, 454 450 332 207 204 ไบต์

-4 ไบต์ขอบคุณสตีเฟ่น -125 ไบต์ขอบคุณ Shaggy และ Dom Hastings

_=>[...`]






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

มีจำนวนเรือที่ไม่สามารถพิมพ์ได้ในคำตอบนี้ดังนั้นนี่คือ 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())


ฉันเชื่อว่าการคืนค่าจากฟังก์ชันจะใช้ได้
สตีเฟ่น

โอ้ขอบคุณที่ถูกต้อง คุณช่วยทำส่วน HTML ด้วยได้มั้ย : PI จริงจังไม่รู้เรื่องนี้มากฉันเพิ่งเลือก JS เพราะแทนที่ regex เรียบร้อย แก้ไข : ขอบคุณ : D
มนุษย์

คุณสามารถคัดค้านคำพูดในช่วงที่ผ่านมา+'1'เพราะมันเป็นแล้วStringและ+'0621'สามารถ+0+621!
Dom Hastings

1
222 ไบต์ - อันสุดท้ายฉันสัญญา!
Shaggy

3
[...`]ทำให้ฉันโกรธมาก
ETHproductions

2

JavaScript (ES6), 206 205 204 203 198 197 194 ไบต์

เข้าร่วมกับสิ่งนี้ในขณะที่ทำงานกับโซลูชัน i cri everytim ของคิดว่ามันแตกต่างกันมากพอที่จะรับประกันการโพสต์ด้วยตัวเอง

ซึ่งรวมถึงการโหลดของ unprintables ระหว่าง]และ,ดังนั้นตามลิงค์ TIO ด้านล่างเพื่อดูด้วย Unicode หนี (แต่ละลำดับของ\uตามด้วยตัวเลข 4 หลักนับเป็น 1 ไบต์)

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

ลองออนไลน์


2

MATLAB / Octave , 319 318 bytes

นี่เป็นความพยายามครั้งแรกของฉันสำหรับความท้าทายนี้ ยังมีขนาดค่อนข้างใหญ่และอาจมีวิธีที่มีประสิทธิภาพมากกว่าในการทำ แต่ฉันคิดว่าฉันโพสต์มันต่อไปเนื่องจากวิธีการนั้นน่าสนใจมากกว่าเพียงแค่ซิปมัน

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

ลองออนไลน์!

วิธีการที่ใช้ที่นี่คือการใช้รูปแบบ Run-Length-Encoding

เราเริ่มด้วยหมายเลขเดิมและนับจำนวนหลักที่ต่อเนื่องกัน สิ่งเหล่านี้เขียนในผลลัพธ์ด้านล่างตามจำนวนที่ตามมาโดยตรงด้วยหลัก (ช่องว่างคั่นเพื่อความชัดเจน)

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

หากค่าใด ๆ ที่มีขนาดใหญ่กว่า 95 เราแบ่งมันออกเป็นหลาย ๆ ชิ้นที่ 95 หรือน้อยกว่า - สิ่งนี้เกิดขึ้นสำหรับ 445 0 เท่านั้นซึ่งแทนที่จะกลายเป็นสี่ชุด 95 0 และชุด 65 0 นอกจากนี้เรายังรองจำนวนใด ๆ ที่น้อยกว่า 10 ด้วย 0 เพื่อให้องค์ประกอบทั้งหมดมีความยาวสามอักขระ อัตราผลตอบแทนนี้เมื่อมีการลบช่องว่าง:

938241068241068061018101018061068051028101028051068041038101038041068041038101038041068031048101048031068031058081058031068031068061068031068031188031068031188031068031188031078031168031048011038031168031038021048031148031048031048031128031048051048041088041048071048141048091048121048111048101048131048081048151058041058171058021058201088231068261028441010016012011950950950950650011

ในการเข้าใจถึงปัญหา ณ จุดนี้ฉันสามารถทำขั้นตอนนี้ก่อนที่จะรวมทั้งหมดเข้าด้วยกัน แต่คุณครวญเพลงคุณอยู่และเรียนรู้ เราทำสิ่งที่ฉลาดซึ่งจะนับสำหรับแต่ละกลุ่ม (2 หลัก) และเราบวก 31 เพราะทั้งหมดนั้นคือ <96 จำนวนผลลัพธ์คือค่า ASCII สำหรับอักขระที่พิมพ์ได้ (32 ถึง 126) ให้เรานับจาก:

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

หลังจากที่ปรับแต่งเล็กน้อยใน MATLAB เพื่อให้เป็นที่นิยมมากขึ้นสำหรับการถอดรหัสแล้วก็หนี'ตัวละครด้วย''(มิฉะนั้น MATLAB จะแยกตัวอักษรสตริงที่นั่น) เราจะเหลือสตริงที่ฉลาด:

|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 มิติที่มีอักขระ 128 คู่ สำหรับแต่ละคู่อักขระตัวแรกจะถูกลบออก 31 ตัวจากนั้นอักขระตัวที่สองจะแสดงขึ้นหลายครั้ง

ผลลัพธ์ที่ได้คือไพรม์ดั้งเดิม:

888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888111111111111111111111111888888111111111111111111111111888888111111811111111118111111888888111118811111111118811111888888111188811111111118881111888888111188811111111118881111888888111888811111111118888111888888111888881111111188888111888888111888888111111888888111888888111888888888888888888111888888111888888888888888888111888888111888888888888888888111888888811188888888888888881118888188811188888888888888881118881188881118888888888888811188881118888111888888888888111888811111888811118888888811118888111111188881111111111111188881111111118888111111111111888811111111111888811111111118888111111111111188881111111188881111111111111118888811118888811111111111111111888881188888111111111111111111118888888811111111111111111111111888888111111111111111111111111118811111111111111111111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

การแก้ไข:

  • จัดสายเวทใหม่เพื่อที่ฉันจะได้กำจัดทรานสคริปท์หลังการก่อร่างใหม่ บันทึกเป็นไบต์

2

05AB1E , 76 ไบต์

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

ลองออนไลน์!


ขโมยสิ่งนี้จาก Dennis:

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

สังเกตเห็นมันสลับกันเสมอระหว่าง 8 และ 1 ดังนั้นฉันจึงนับความยาวของการวิ่งแต่ละครั้ง (ฐาน 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']

รวมเข้าด้วยกันและแปลงเป็นจำนวนเต็ม 10 ฐาน:

3954184379309026812828704944878416720438306456270310298603957651230861078960874182787979106461

บีบอัดมันเพิ่มเติมใน base-255:

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

จากนั้นหลังจากสร้างบิตบีบอัด ... เราแค่ต้องจัดการมันกลับไปเป็นต้นฉบับ ..

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.

ผลลัพธ์สุดท้าย:

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

2

C (gcc) , 277 ไบต์

ฉันรู้สึกว่าสายสั้นลงได้บ้าง

#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);}

ลองออนไลน์!


1

Perl 5 , 307 ไบต์

$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)

ลองออนไลน์!


1

Bubblegum , 88 ไบต์

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..

ลองออนไลน์!


1

Ruby , 194 ไบต์

$><<?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

ส่วนบนเป็น RLE-encoded ส่วนที่เหลือนั้นเป็นฮาร์ดโค้ด

ลองออนไลน์!


1

Kotlin , 339 ไบต์

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])}}

ลองออนไลน์!


1

CJam ( 108 81 ไบต์)

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

การสาธิตออนไลน์

ในกรณีที่การเข้ารหัสอักขระ borks ข้างต้นนี่คือ 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

การรันครั้งแรกของ 8s และ 1s จะถูกแบ่งออกเป็นครึ่งซ้ายและเข้ารหัสที่มีความยาวเป็นเพียงความยาวของการสลับแบบรัน การวิ่งที่มากกว่า 24 จะแบ่งออกเป็นการวิ่งที่มากที่สุด 24 แยกด้วยการวิ่ง 0 เพื่อให้ความยาวสามารถเข้ารหัสได้ -25 ฐานแล้วเข้ารหัส-256 ฐานเพื่อแพ็คลง


1

JavaScript (ES2017), 287 ไบต์

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

ใช้แนวทางที่แตกต่างกันเล็กน้อยในการตอบของ@icrieverytim -10 ไบต์ขอบคุณที่@Shaggyแนะนำให้ใช้replaceแทนmatch!

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>


1
287 ไบต์
Shaggy

1

/// , 260 ไบต์

/;/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

ลองออนไลน์!

ไม่มีอะไรน่าสนใจอย่างยิ่งบีบอัดบางอย่าง



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.