Keluarkan Pesan Arecibo

38

Pesan Arecibo adalah pesan radio antarbintang 1974 yang membawa informasi dasar tentang kemanusiaan dan Bumi yang dikirim ke gugus bintang globular M13 dengan harapan bahwa intelijen ekstraterestrial dapat menerima dan menguraikannya ... Pesan itu terdiri dari 1.679 digit biner, sekitar 210 byte ...

Nomor 1.679 dipilih karena merupakan semiprime (produk dari dua bilangan prima), yang disusun empat persegi panjang menjadi 73 baris dengan 23 kolom. Pengaturan alternatif, 23 baris dengan 73 kolom, menghasilkan serangkaian karakter yang tidak dapat dipahami (seperti halnya semua format X / Y lainnya).

Pesan Arecibo

Ini adalah pesan dengan warna yang ditambahkan untuk menyorot bagian-bagian yang terpisah. Transmisi biner yang sebenarnya tidak membawa informasi warna.

Sumber: Wikipedia


Tugas Anda adalah menampilkan Pesan Arecibo dalam pengaturan 23x73 persis seperti yang ditunjukkan pada gambar. Format output ini dapat diterima:

  • Teks, menggunakan satu karakter untuk satu dan lainnya untuk nol (menggunakan aturan biasa untuk pemisahan baris)
  • Array 2D dari dua nilai yang berbeda
  • Gambar 23x73 dengan dua warna berbeda
  • Aan aliran terputus dari 1679 item dari dua nilai yang berbeda (yaitu salah satu format di atas, tetapi datar.)
  • Bilangan bulat 1679-bit. Tunjukkan urutan bit dan byte (endianness) dalam solusi Anda.

Untuk kenyamanan Anda, berikut adalah versi yang dapat disalin dari copy (juga merupakan contoh output dalam format teks):

00000010101010000000000
00101000001010000000100
10001000100010010110010
10101010101010100100100
00000000000000000000000
00000000000011000000000
00000000001101000000000
00000000001101000000000
00000000010101000000000
00000000011111000000000
00000000000000000000000
11000011100011000011000
10000000000000110010000
11010001100011000011010
11111011111011111011111
00000000000000000000000
00010000000000000000010
00000000000000000000000
00001000000000000000001
11111000000000000011111
00000000000000000000000
11000011000011100011000
10000000100000000010000
11010000110001110011010
11111011111011111011111
00000000000000000000000
00010000001100000000010
00000000001100000000000
00001000001100000000001
11111000001100000011111
00000000001100000000000
00100000000100000000100
00010000001100000001000
00001100001100000010000
00000011000100001100000
00000000001100110000000
00000011000100001100000
00001100001100000010000
00010000001000000001000
00100000001100000000100
01000000001100000000100
01000000000100000001000
00100000001000000010000
00010000000000001100000
00001100000000110000000
00100011101011000000000
00100000001000000000000
00100000111110000000000
00100001011101001011011
00000010011100100111111
10111000011100000110111
00000000010100000111011
00100000010100000111111
00100000010100000110000
00100000110110000000000
00000000000000000000000
00111000001000000000000
00111010100010101010101
00111000000000101010100
00000000000000101000000
00000000111110000000000
00000011111111100000000
00001110000000111000000
00011000000000001100000
00110100000000010110000
01100110000000110011000
01000101000001010001000
01000100100010010001000
00000100010100010000000
00000100001000010000000
00000100000000010000000
00000001001010000000000
01111001111101001111000

Jika bahasa Anda, karena alasan tertentu, memiliki builtin untuk Pesan Arecibo, Anda tidak boleh menggunakan builtin itu.

Semoga berhasil!

UPDATE: Saya menerima jawaban 05AB1E karena itu adalah yang pertama lebih pendek dari pesan aslinya. Jangan biarkan itu menghalangi Anda dari solusi baru.

UPDATE 2019-09-09: Jawaban yang diterima dipindahkan ke jawaban 05AB1E yang baru, karena jawaban itu menggantikan jawaban 05AB1E sebelumnya. Poin yang sama berlaku sebagai pembaruan sebelumnya; solusi baru masih diterima.

Beefster
sumber
9
Jika suatu bahasa memiliki pesan bawaan untuk Arecibo, saya dapat mengatakan, dengan pasti, bahwa saya telah melihat segala sesuatu di dunia ini c:
Luis felipe De jesus Munoz
6
Mathematica (IIRC) memiliki gambar bawaan untuk Lena, jadi tidak mengejutkan saya jika juga memiliki pesan Aricebo.
Beefster
@RobertS. tidak ada karena ada format lain yang valid selain teks.
Beefster
4
Dalam semangat format asli, hasil / keluaran tetap harus diizinkan. Seluruh titik 1679 bit adalah jumlah baris dan kolom yang tepat dapat disimpulkan dari panjang sinyal.
Adám
4
@LuisfelipeDejesusMunoz Mathematica memiliki builtin untuk menentukan kambing dalam gambar , jadi pesan Arecibo builtin tidak akan mengejutkan saya juga .. Bahasa itu dibangun di atas builtin dari alam semesta ..>.>
Kevin Cruijssen

Jawaban:

2

05AB1E , 182 byte

•sv¯ö¨₁ÿ.ÛïžôΔ¨γ_Ígv…=Bм„Ð.(ܦi´…ε±G½0^/₃öRÛž¼¤"āêL!ˆ6‘Gā܇ðв₁÷Ã7€₂䬂Cć¨g¾†@÷[_-68¯a∍iG*6ÆîÆ;>éjζãÎÂ+ºžnî¼ć'(ÝÞΔ‹∞ÉݹÕ5λ₆*a|§oÄmôæ¨;—:hž¥ð¢ocË'¨%¡4Ćáß©ìća;FÁ?iˆèεƒʒ•Ž6–FD4‰`3ÊD?i-

Cobalah online! (kegunaan 1untuk 0 dan 0untuk 1, sebagaimana diizinkan oleh pertanyaan).

Cobalah online! (5 byte lebih lama, 0untuk 0 dan 1untuk 1, menambahkan baris baru untuk dibaca).

Sebagian besar kode adalah konstanta integer basis-255 N, sisanya adalah dekoder Sistem Angka Asimetris , menggunakan probabilitas hardcoded sebesar 75% / 25% (frekuensi aktual 0 adalah 76,35%, yang sangat dekat dengan 75% sehingga hanya akan menghemat 1,2 bit dalam payload, sedangkan 75% yang bagus dan bulat memungkinkan kita menghemat beberapa byte dalam decoder).

Ž6–F                  # repeat the following 1679 times:
    D                 #  duplicate N
     4‰`              #  divmod 4: pushes N / 4, N % 4 on the stack
        3Ê            #  is N % 4 != 3 ? (boolean 1 or 0)
          D?          #  print a copy
            i-        #  if it's 1, subtract: N = N - (N / 4)
                      #  (otherwise, N = N / 4, since that's the top of the stack)

Inilah encoder ANS yang menghasilkan konstanta: Coba online!

Î                          # start from N = 0
 Rv         ]              # for each bit in the reversed input:
   4*                      #  N *= 4
     yi                    #  if the bit is 1:
       3+                  #   N += 3
         ë                 #  else:
          3÷               #   N /= 3 (integer division)
             ₅B'•.ø        # compress N as base-255
Grimmy
sumber
Kerja bagus menghapus jawaban 05AB1E sebelumnya!
Beefster
13

05AB1E , 215 210 200 byte

Disimpan 15 byte berkat Magic Octopus Guci

•cOž¤4é57ñΛ\Ö₃BαöĀíL½₅üBdoÙRθLγ¨G×Tćú$G(˜ƒ¦!€R»SDrµCnJ†d∊ζ·<8‡T@|‹ï=BζćósxG\ÙÎ$¿o₁5/ÔŸÇBûXé-”a::Ž]°∊y;ζ]MÜβ‘иL”β{üÃÇíäc€÷›ÎU=}¨иaŸdY`»¾ÚUβ:ô©¦β†₅DGŠβ3Jêθ,äá!ícqšVÖ›lÈΣ¯pε €êʃDpÙ/¬Žλ8:ãÿ3=€.Þć•3BY¾4×:

Cobalah online! atau dengan pemformatan tambahan

String trotoar base-255 yang dikodekan dengan kemunculan 0000diganti oleh 2.

Emigna
sumber
@MagicOctopusUrn: Terima kasih! Itu membuatnya 210 bahkan :)
Emigna
Ini sebenarnya lebih baik jika Anda ganti 0000dengan 29 byte lebih. - pastebin.com/aZ6tHxjx untuk 201
Magic Octopus Mm
@MagicOctopusUrn: Ya, saya menemukan itu juga dan baru saja akan mempostingnya :)
Emigna
2
Keren! Karena pesan Arecibo adalah 210 byte (23 * 73/8 = 209.875), solusi Anda (saat ini 200 byte) lebih pendek daripada pesan itu sendiri!
JL
Saya meneruskan dan menjadikan ini jawaban yang diterima karena itu adalah jawaban pertama yang lebih pendek dari pesan itu sendiri.
Beefster
11

Java, 688 678 590 379 361 byte

Mengembalikan string.

n->new java.math.BigInteger("in95mzupnpa2r0khpoepyql6ioqyn413avucdtfay6indx4wh9dehe3sn18klobtf4z9g9q17umqmwpegr2khb5eqinn7azl4jpfp2a8eui0xfrx5qwrou6gd65jh4ge3ls14k5lu7qrvmg6942ms29u5rb8fa6yrdhfoh5zoi9bdi7uh5ig0u0ff9kounth8sh357x7qox4m3oqviqsbrvakonbka4ahp21bgzi5v1akzzuqoncszhpabbru9q1uo2g11zr73iuyiqr5ikr69zn7cdv7e1lhd6ese9",36).toString(3).replace("2","0000")

-10 byte dengan mengembalikan aliran mentah (jawaban lama)
-88 byte dengan menggunakan basis 10 angka (terima kasih @ceilingcat!)
-211 byte (saya tahu itu bisa golf!) Dengan menggunakan basis-36 yang dikodekan BigInteger (terima kasih @JollyJoker !)
-18 byte dengan menggunakan integer yang dienkode yang berbeda (terima kasih lagi @JollyJoker)

Cobalah secara online!

Penjelasan:

n->new java.math.BigInteger("base36 string",36) // Decode the base-36 integer.
   .toString(3)                                 // Re-encode as ternary
   .replace("2","0000")                         // Replace 2 with "0000"
                                                // Implicit return
Benjamin Urquhart
sumber
1
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Adam Lear
9

Jelly , 213 byte

“H²ɓ¶Ṡḷ€ẹ]ƒf*ḳḢ&ƁṇOḥ{ḄṫwỊ+oLạʋߢH9¢¹÷ỴɗÇ⁶ƲƙæḊẋ3³=1!VƇƁ'D⁺3Ỵɱ©⁵%fȯez#ƈjƒżṆo.ZF⁶ċṢ⁶ọṛb9Ȯƒd?ƁUĠt4ẇ,ḞġƒµƭfʠƁP§÷øȤŻPɲẋ(¢ß¢(⁽3¶ṙėɗy@ṁYȮL~e⁷ƤĊ§nỊṅµṠ°@7ẠB>Ġ⁻İ}uy¡½:esOpḢt}qS©HÞṬĖṛṇḣ9÷;ESḢ,Ẉ^ṙpƲ©tṃwçnẒṆ¡⁻Jıƒị£-&Ɱ*ẋʂżoȯÑḢɼ’

Cobalah online!

Saya bermain-main dengan pengkodean Huffman, tetapi peningkatan dalam ukuran data lebih besar daripada kode tambahan. Dengan demikian, ini hanyalah versi disandikan basis-250 dari output yang diinginkan. Keluaran terdiri dari bilangan bulat yang bila diterjemahkan sebagai basis bijektif 2 akan menghasilkan daftar 1D dari 1s dan 2s. Terima kasih @Emigna karena menunjukkan perubahan aturan.

Cobalah online - dengan decoding lebih lanjut untuk menunjukkan keluaran!

Jika pengkodean biner yang lebih konvensional lebih disukai, di sini adalah salah satu yang mengkodekan representasi integer dari pesan biner terbalik. Bit integer yang paling signifikan mewakili awal pesan.

Nick Kennedy
sumber
7

Brainfuck, 2360 2008 1938 byte

-[>+<-----]>---......+.-.+.-.+.-.+.-............+.-.+.-.....+.-.+.-.......+.-.<++++[->.+.-..<]>+.-.+..-.<+++++++++[->.+.-<]>..+.-..+.-<++++++[->......<]>.+.<++[->.-...................+..-.+<]>.-..................+.-.+.-.+.-..................+.....-<++++++++[->....<]>+..-....+...-...+..-....+..-...+.-.............+..-..+.-....+..-.+.-...+..-...+..-....+..-.+<++++[->.-.+....<]>.-<+++++[->.....<]>.+.-.................+.-............................+.-.................+......-.............+.....-.......................+..-....+..-....+...-...+..-...+.-.......+.-.........+.-....+..-.+.-....+..-...+...-..+..-.+.-.+.....-.+.....-.+.....-.+.....-..........................+.-......+..-.........+.-...........+..-...............+.-.....+..-..........+......-.....+..-......+.....-..........+..-.....<+++[->........+.-<]>.....+.-......+..-.......+.-.......+..-....+..-......+.-..........+..-...+.-....+..-...............+..-..+..-.............+..-...+.-....+..-.........+..-....+..-......+.-.......+.-......+.-........+.-.....+.-<++[->.......+..-........+.-...+.-.<]>........+.-.......+.-<++++[->.....+.-..<]>..........+..-.........+..-........+..-.........+.-...+...-.+.-.+..-...........+.-.......+.-..............+.-.....+.....-............+.-....+.-.+...-.+.-..+.-.+..-.+..-......+.-..+...-..+.-..+.......-.+...-....+...-.....+..-.+...-.........+.-.+.-.....+...-.+..-..+.-......+.-.+.-.....+......-..+.-......+.-.+.-.....+..-......+.-.....+..-.+..-<+++++++[->.....<]>+...-.....+.-..............+...-.+.-.+.-..<++++++[->.+.-<]>..+...-.........+.-.+.-.+.-.+.-................+.-.+.-..............+.....-................+.........-............+...-.......+...-.<++[->........+..-...<]>....+..-.+.-.........+.-.+..-<++[->.....+..-..+..-..<]>..+.-...+.-.+.-.....+.-.+.-...+.-..<+++[->..+.-...+.-<]>........+.-...+.-.+.-...+.-............+.-....+.-.<++[->...+.-.........<]>+.-..............+.-..+.-.+.-...........+....-..+.....-.+.-..+....-...

Cobalah online!

Saya mungkin akan golf ini lebih jauh segera.

orthoplex
sumber
5

Deadfish ~ , 1115 1088 1084 bytes

oooooo{i}ooo{d}iod{o}{i}c{d}ooiodoiodoooooiodoiodoooooooiodoo{i}c{ii}is{iiii}doooio{{{d}}}oioodooiodo{i}coooooooo{d}o{{i}}oo{{d}i}c{d}{oo}ooo{i}c{d}{o}ooioodooooooooo{i}c{d}{o}ioodoiodooooooooo{i}c{d}{o}ioodoiodooooooooo{i}c{d}oooooooooiodoiodoiodooooooooo{i}c{d}oooooooooiooooodooooooooo{i}c{d}{oo}ooo{i}c{d}ioodooooiooodoooioodooooioodooo{i}c{d}iod{o}oooioodooiodoooo{i}c{d}ioodoiodoooioodoooioodooooioodoiodo{i}c{d}iooooodoiooooodoiooooodoioooood{i}c{d}{oo}ooo{i}c{d}oooiod{o}oooooooiodo{i}c{d}{oo}ooo{i}c{d}ooooiod{o}oooooooiod{i}c{d}ioooood{o}oooioooood{i}c{d}{oo}ooo{i}c{d}ioodooooioodooooiooodoooioodooo{i}c{d}iodoooooooiodoooooooooiodoooo{i}c{d}ioodoiodooooioodoooiooodooioodoiodo{i}c{d}iooooodoiooooodoiooooodoioooood{i}c{d}{oo}ooo{i}c{d}oooiodooooooioodoooooooooiodo{i}c{d}{o}iood{o}o{i}c{d}ooooiodoooooiood{o}iod{i}c{d}iooooodoooooioodooooooioooood{i}c{d}{o}iood{o}o{i}c{d}ooiodooooooooiodooooooooiodoo{i}c{d}oooiodooooooioodoooooooiodooo{i}c{d}ooooioodooooioodooooooiodoooo{i}c{d}ooooooioodoooiodooooioodooooo{i}c{d}{o}ioodooioodooooooo{i}c{d}ooooooioodoooiodooooioodooooo

Cobalah online!

Jika seseorang memiliki kesabaran untuk bermain golf lebih jauh, saya salut sebelumnya. : P

-27 byte dengan mencetak 10 dan 100 di tempat-tempat yang berlaku.
-4 byte dengan mencetak tiga 1000s dan satu 1001 pada baris 3

Pasang kembali Monica
sumber
4

Piet , 1763 codels

Menghasilkan aliran 0s dan 1s (tanpa jeda baris).

Ukuran codel 1:

Program pesan Arecibo dengan ukuran codel 1

Ukuran codel 4, untuk lebih mudah dilihat:

Program pesan Arecibo dengan ukuran codel 4

Penjelasan

  • Pertama, dorong nilai sentinel -1 ke tumpukan.
  • Kemudian dorong pesan Arecibo, dalam urutan terbalik (karena itu tumpukan), menggunakan pengkodean run-length.
  • Akhirnya, bergantian di antara dua loop, satu nol mencetak dan yang lainnya mencetak.
    • Penghitung lingkaran adalah nilai tumpukan saat ini, dikurangi hingga mencapai nol, pada titik mana itu dibuang dan kami beralih ke loop lainnya.
    • Antara loop nol dan loop satu, periksa nilai sentinel, keluar jika ditemukan.

Catatan

Program mengikuti jalur spiral, searah jarum jam dari kiri atas ke tengah. Blok hitam yang tersebar yang secara kasar mengikuti diagonal adalah kontrol aliran. Inilah jejak dari NPiet .

Saya sudah mengerjakan ini sejak hari tantangan ini naik, tetapi butuh sedikit waktu untuk memasukkan pesan "tertulis" ke dalam gambar! Saya menulis loop terakhir dan nilai sentinel pertama, dan kemudian membangun pesan dari pusat ke luar. (Karena Piet selalu memulai eksekusi dari kiri atas, saya berharap harus mengocok dan memutar gambar untuk menghindari ruang kosong yang berlebih, tapi itu pas sekali!)

Fakta menyenangkan: Pengkodean run-length di Piet tidak (dengan sendirinya) menghemat ruang. Dibutuhkan n kode dari satu warna untuk mendorong nilai n ke tumpukan, atau n kode dari berbagai warna untuk mendorong banyak 1 ke tumpukan. Jadi itu adalah jumlah kode yang sama. Tetapi angka yang lebih besar dari RLE memberi Anda berarti Anda dapat menggunakan trik aritmatika (misalnya alih-alih mendorong 9, Anda dapat menekan 3, menggandakan, dan mengalikan) untuk mengurangi jumlah codel, dan blok berbentuk lucu untuk mengisi ruang kosong yang tersedia.

Saya tidak yakin tentang bagaimana cara menghitung skor untuk entri Piet. Saya menemukan beberapa yang tampaknya menghitung semua kode, dan yang lain secara eksplisit hanya menghitung yang digunakan secara aktif. Saya hanya menghitung mereka semua; mengabaikan kode putih (bahkan yang tidak pernah diprogram oleh program) tampaknya sama dengan mengabaikan spasi putih dalam bahasa pemrograman yang lebih umum.

Oh, dan saya baru saja (dua jam setelah posting) menyadari bahwa saya membuang-buang waktu terakhir untuk mengerjakan ini. Saya ingin memotong baris dan kolom terakhir yang hampir sepenuhnya putih, jadi saya mengaduk-aduk banyak hal ... termasuk blok kontrol aliran hitam. Tetapi tepi gambar berfungsi sama dengan hitam! Jika saya hanya ingat itu, saya tidak perlu menghabiskan begitu banyak waktu untuk memikirkan seluk-beluk DP dan CC ...

Tim Pederick
sumber
3

C # (Visual C # Interactive Compiler) , 366 332 329 319 byte

int i;foreach(var g in"*ЀʂЄ࢈ҲપԤ␀␀␀؀ȀȀȀ؀␀␀సؘࠀƐഘؚ྾ߟ␀␀Ā␀␀ྀ␀␀రܘࠈഌΚ྾ߟ␀␀ă␀ྃ␀ȁăÃ1`ƀ1`ÃĂȃЃЁȂĀ`ÀƀȺ؀Ȃ␀ȏЀȗɛ'Ŀஇ7;ȅ?ȅ0ȍЀ␀␀΂␀ΨՕ΀Ŕ␀ŀЀ?܀àǀƀ`̀°٠Ƙѐʈш҈EB@Ѐޟɸ")Write(Convert.ToString(g,2).PadLeft(12-i++%2,'0'));

Ganti semua contoh dengan \0untuk menguji.

Cobalah online!

C # (Visual C # Interactive Compiler) , 305 byte, 210 karakter

_=>"*ЀʂЄ࢈ҲપԤ␀␀␀؀ȀȀȀ؀␀␀సؘࠀƐഘؚ྾ߟ␀␀Ā␀␀ྀ␀␀రܘࠈഌΚ྾ߟ␀␀ă␀ྃ␀ȁăÃ1`ƀ1`ÃĂȃЃЁȂĀ`ÀƀȺ؀Ȃ␀ȏЀȗɛ'Ŀஇ7;ȅ?ȅ0ȍЀ␀␀΂␀ΨՕ΀Ŕ␀ŀЀ?܀àǀƀ`̀°٠Ƙѐʈш҈EB@Ѐޟɸ".Select((g,i)=>Convert.ToString(g,2).PadLeft(12-i%2,'0'))

Sama dengan di atas, ganti dengan dengan \0untuk menguji. Output sebagai IEnumerable<string>.

Cobalah online! (Atas perkenan Jo King)

Perwujudan Ketidaktahuan
sumber
Saya percaya ++dalam 12-i++%2adalah nop (setidaknya, itu bekerja untuk saya ketika saya dihapus)
ganti saya adalah monicareinstate
@someone Mereka adalah salin-tempel dari jawaban lama yang saya lupa hapus
Perwujudan Ketidaktahuan
2

Perl 6 , 368 byte

.say for :36('FJXOE0PDDNF5Y5EHGB8M9SWMXQOXIKIT9F6ZKWWDEACHCBGXL1N2H60CN0CJ4EMKF7D6MODSKYJVNR4SFTDR6NSM421LQ67B6MWF0G5BQATFOJJJBQ0UFQM64T0MWSQN41C4S5D1QR5KJM2L9UTYMMKUBBQWY45YCMRGO8ZRGTQH7LXMZBUASLCTKX30IH0AYKYEPHO8HFHX8GAY5WM38YOSUX0HABYSH2PPBLRDRZIN5ANAQ3V8PLOZ6EHC0UI95EVJVYD1820T6J14HGX85NWFQET2NWOMSNUT0JW4LHMY90X094TEE9KXJXSNN6YPERFQW').base(2).substr(1).comb(23)

Cobalah online!

String panjang adalah pesan sebagai nomor basis-36 tunggal (dengan awalan 1 bit untuk mempertahankan nol terkemuka) yang kemudian dikonversi kembali ke biner dan dicetak 23 bit sekaligus.

Sean
sumber
Anda bisa menggunakan >>.saydan&{S/.//} menyimpan byte. Sudahkah Anda berpikir tentang menggunakan basis yang berbeda?
Jo King
Ya, saya mencoba menggunakan basis 65536 / Unicode, tetapi pesan tersebut masuk ke beberapa codepoint pengganti terlarang. Saya bisa menghindarinya dengan menambahkan offset tetap pada setiap codepoint, tetapi yang mengejutkan, beberapa string yang dihasilkan crash Emacs beberapa kali. Menyelesaikan masalah mulai membutuhkan lebih banyak waktu daripada yang bisa saya lakukan. Saya mungkin akan meninjau kembali masalahnya nanti.
Sean
Tidak ada gunanya beralih ke beberapa karakter byte, karena itu meningkatkan jumlah byte Anda. 289 byte dengan menerapkan tip saya dari atas dan menggunakan basis 122 (untuk menghindari pengembalian kereta)
Jo King
2

Bahasa Wolfram (Mathematica) , 383 byte

StringPartition[Uncompress@"1:eJylVNsRwjAM44s92KBaBTZgAUZhZXqtHUuOWrgjfSRRHFlO4tyer/vjfb1clq0gHirZLRjby986hppcT5p+L3BmgJ3t4Ul4GsNyG++7YbaXLh0ZTPhXa4Sn+X/s9Qfk3Hx2cOaSIuNYaVu5laschvgzSqAjHeZBhilKgKBDEhw0upJRg+HOK4MyNC29sfbc3RV0VPDqeLiRTsG1ulExq1IitpunOa7asnYM9siDZ6eidUCkEzBOUbCkGIig4aTyUGBYWAX6W6aXIWGGI/HlhmsqzSU0QTZjkMVpaX5sBsm1OGKVg1qdjKP0EdyqZBRLhukn8DLBQav6kccgz8OKfgBzjj6Z",23]

Cobalah online!

J42161217
sumber
2

Node.js , 333 byte

Mengembalikan string biner sebanyak 1.679 karakter.

_=>Buffer(")SI)=.);1K?>>>2333A3,93/I3>3)g33)AEAAI)5JQZJTddda3)*3*33+3,e)*e3)//0/1+)1C/7Cgggg3395)9)A3IY)h*IH),39+)995*)AA-)59Y)*O3Z,)//*)91**)A*-)Y+1)I11+)I1)/)5)Y*0?)+)I)-0Y)1@;_*7<gaE/a)Q7[*9HM+IY16I33)a1)*^.><I+S3.38I)*hY)7)a)Y)A,9*A5Y/A:9=9K:1I-=9)19I)9*329)GH<").map(x=>s+=(x-51&&x-41).toString(2).padStart(x-51?6:12,0),s='')&&s

Cobalah online! (dengan output yang diformat)


JavaScript (ES8), 413 byte

Mengembalikan string biner sebanyak 1.679 karakter.

_=>atob('AsKoAFBQEiIlwpVVUk!!ABwo!DQ!Gg!V!Aw7g!!GHGHCi!yGjHChsK+w7vDr8K!!Q!Q!!g!/DgAHDs!AGGHDhiAgCGhjwprDu8Ovwr4!ABAw4AQAcK!MKDAD8GB8OAD!QCAQQMBAYYEAMQwABwpgAMQwBwoYEBAgEEBgEQDAIwoAgIMKAwoDCgMKABgDDgDAEdcKACAgAEHwAIXTCtgTDpMO+w6HDgcK4AsKDwrIFB8OkCgwINg!!A4IAB1FVTDoArCo!U!/CgAB/w4ADwoDDoAwAYDQBYMOMBmEUFEIkSMKARR!woQgAQB!MKUAHnDtA'.split`!`.join`AA`).replace(/[\s\S]/g,c=>c.charCodeAt().toString(2).padStart(8,0))

Cobalah online! (dengan output yang diformat)

Arnauld
sumber
2

Bubblegum, 275 236 byte

00000000: e006 8e00 e45d 0018 6988 6507 a228 f86f  .....]..i.e..(.o
00000010: f042 c62f d4d7 b99e 38bc 56c4 52e8 2630  .B./....8.V.R.&0
00000020: 8aaa 7252 d47d 5ef4 c96a 511f 6842 423f  ..rR.}^..jQ.hBB?
00000030: 4532 ca9f 22d3 1633 e0c4 665a d5dc 4e68  E2.."..3..fZ..Nh
00000040: 7b09 76ae 3c7e f9d4 fa4a 05e0 4163 c580  {.v.<~...J..Ac..
00000050: c585 a383 2396 4ca9 1f48 a4b9 744e 37c8  ....#.L..H..tN7.
00000060: 68c5 af23 645d 59a7 542a e6d1 23b9 3aba  h..#d]Y.T*..#.:.
00000070: f0e6 2738 dfd5 b0a3 c6a3 60bf c5b6 5ae6  ..'8......`...Z.
00000080: 7893 30a8 ae04 edf9 298b b777 4d56 285b  x.0.....)..wMV([
00000090: cb74 07cc 7a7b a399 3dc7 c6e7 b693 e715  .t..z{..=.......
000000a0: d908 876e 001f 7408 3c6a 5fcd 37cb 02c4  ...n..t.<j_.7...
000000b0: 93de 33c2 a11e 5bac cd12 d99a fac3 e0fa  ..3...[.........
000000c0: 5268 94f7 d640 0f73 cede f79d 821f 39d1  [email protected].
000000d0: dc49 ff06 6962 6c31 dc29 a077 01c3 7690  .I..ibl1.).w..v.
000000e0: 85ef bbec 31d7 5c7f f9fc 8c00            ....1.\.....

Cobalah online!

orthoplex
sumber
2

bash + alat GNU, 351 byte

base64 -d<<<H4sIAPnNrVwCA6WUCRLDIAwDv8T+/3NNG4wvkTBTcisGSyA8xrcxj9Ds02F+Z7yuf3hnPyz0vYEGz+FG3IKBs+x3oL2PSh0TM/PnaGamft9nPUCew3uCp5RBWdRKGz+qNJn8qRKkkNaTBgeVIFXWOdi8VCaIeUnsfHo6TXpaFa3H5olf6J5MuIHLoEi0uKcRFCvEXG4xseglKzZg7kpYJSLMA3M7wXKR+/L2WiK0kvg+TDASLp6Co1KEVIlVmFzhCktRhBBDdSZYU1xKHrmDUllcWpNR/YNW2QNcHtF0rSySb0MXk/SDUgEwG5gfLvQDxuEdDo8GAAA=|gunzip

TIO

Nahuel Fouilleul
sumber
tidak melihat posting bash Anda sebelum saya memposting milik saya - jauh lebih kecil!
Noodle9
2

MathGolf , 223 220 byte

'06*"x·<×J× Ç×►B×ê\"@$↕!◙è0♥f░×→0×♠p└☺α?×└•×◙×P♣p¬è:×►∟××××←♦♠♣≥â☻┘A☺▄αp⌂r☻[║►×>◘×♦♦└:☻↑`×♥@@@@►►@♦↑ ☻♀◘☻♦☻☻├×å↑×╠×Ç!♠ 0♀◘↑◘☻♦◘×♠α♥â▼ÇA×└×◘` ×××▀≈}═14♦►►π0♀××°×α•×►×××☻×◘××└≈}_├↑♪↓×─0♫♥×××|××*××♪×Ç♠×└×××× ⌐¬╩↕◄○((×T☺"$à+

Cobalah online!

Penjelasan

'0                push single character "0"
  6*              repeat 6 times
    "..."         push the magic string
         $        convert to ordinal
          à       convert to binary string
           +      pop a, b : push(a+b) (add the 6 zeroes)
                  below is the footer
            L/    divide into groups of 23 characters
              n   join array with newlines into string
maks
sumber
Anda dapat memindahkan L/nke footer, jadi sebenarnya 220 byte. Bisakah lebih banyak byte disimpan dengan mem-porting jawaban 05AB1E / Java (menggunakan bilangan bulat terkompresi ini , mengonversinya menjadi basis-3, dan mengganti semua 2s dengan 0000s)?
Kevin Cruijssen
@KevinCruijssen tangkapan bagus! Saya berharap saya memiliki lebih banyak fungsi penggantian string, tapi itu bukan bagian dari MathGolf sekarang.
Maks
Bagaimana dengan peta per digit, 2ke peta mana ♫░╞? EDIT: Sudahlah. Saya melihat Anda tidak memiliki basis Konversi Basis (kecuali untuk biner / heksadesimal) untuk dikonversi ke basis-3?
Kevin Cruijssen
@KevinCruijssen Saya telah memikirkan sedikit tentang bagaimana saya harus mengubah konversi basis. Saya tentu saja tidak memerlukan satu perintah untuk mengubah string biner menjadi desimal, dan yang lainnya untuk mengubah array biner menjadi desimal. Dengan begitu, saya dapat memasukkan perintah konversi basis lain (dan idenya selalu memiliki konversi basis umum dalam bahasa).
Maks
Tentunya Anda dapat memindahkan +ke footer juga
Jo King
1

Perl 5 , 460 byte

printf"%023b",oct"0x$_"for qw/15400 141404 4444b2 555524 0 600 1a00 1a00 2a00 3e00 0 61c618 400190 68c61a 7df7df 0 80002 0 40001 7c001f 0 618718 404010 68639a 7df7df 0 81802 1800 41801 7c181f 1800 100804 81808 61810 18860 1980 18860 61810 81008 101804 201804 200808 101010 80060 60180 11d600 101000 107c00 10ba5b 1393f 5c3837 283b 10283f 102830 106c00 0 1c1000 1d4555 1c0154 140 7c00 1ff00 701c0 c0060 1a00b0 330198 228288 224488 22880 21080 20080 9400 3cfa78/

Cobalah online!

Xcali
sumber
1

Python 2 , 336 byte

print bin(int('gVQAKCgJERLKqqkgAAAAAMAABoAADQAAKgAAfAAAAAMOMMQAGQ0Yw19998AAAAgAAgAAABAAB+AA+AAADDDjEBAENDHNffffAAAAIGAIAMAAQYAfgwPgBgAIBAIIGAgMMCAGIYAAzAAYhgDDAgIEAggMAiAYBEAQEEBAQEADAGAYAjrABAQACD4AELpbAnJ/cODcAUHZAoPyBQYEGwAAAAAcEAA6iqpwBVAACgAHwAA/4AHAcAYAMBoAsGYDMIoKIRIkQCKIAEIQAIAgAEoAPPp4'.decode('base64').encode('hex'),16))[3:]

Cobalah online!

Mencetak serangkaian byte

TFeld
sumber
1

Java (OpenJDK 8) , 364 byte

n->new java.math.BigInteger("in95mzupnpa2r0khpoepyql6ioqyn413avucdtfay6indx4wh9dehe3sn18klobtf4z9g9q17umqmwpegr2khb5eqinn7azl4jpfp2a8eui0xfrx5qwrou6gd65jh4ge3ls14k5lu7qrvmg6942ms29u5rb8fa6yrdhfoh5zoi9bdi7uh5ig0u0ff9kounth8sh357x7qox4m3oqviqsbrvakonbka4ahp21bgzi5v1akzzuqoncszhpabbru9q1uo2g11zr73iuyiqr5ikr69zn7cdv7e1lhd6ese9",36).toString(3).replaceAll("2","0000")

Cobalah online!

Penjelasan: Pertama kali n->new java.math.BigInteger(str,36).toString(2) , hanya mengubah angka radix 36 menjadi biner, tetapi itu membutuhkan sembilan karakter tambahan untuk memimpin nol. Kemudian, saya mendapat gagasan untuk melakukan enkode run-length beberapa nol sebagai dua. Panjang empat nol tampaknya meminimalkan panjang radix 36, jadin->new java.math.BigInteger(str,36).toString(3).replaceAll("2","0000")

Lihat diskusi di bawah jawaban ini untuk perbaikan nol nol terkemuka oleh @KevinCruijssen

JollyJoker
sumber
Bagus. Sangat pendek untuk Jawa!
Eric Duminil
1

[Python 2] , 345 byte

s=''
for c in")pG/K(K*j$h%kk$ppjGE&I6S6S5[5eCv~vw0x&z$wgqcde$e=G4G?G4eG0e:vv~w*G,gn$wy$uuuuG=G)I,G.I2G(I-eG(I)e-I0G+G+G(G)I*G*vI)G-w'I2y0w'I,vI)G*G)G+G(G*I+W+I+W,G*G(G*G*G*G/I,I+I,iq.G*G1G(e/g$c%sG)m%md~$M(},K(cO)K(eO)K(I)G(aE$M(G1c$hpoI,pG3K1e3eU/M*M,I.I*S,Q(y*y'hG(ng&j$j$G+hW/g'G/G,G1k.d$e$mN":c=ord(c)-35;s+=[bin(c-35)[2:],'0'*c][c<35]
print s

Saya menyandikan panjang string 0s sebagai byte mulai dari chr (31). Kemudian saya menyandikan 10101 yang tersisa sebagai angka biner mulai dari chr (70) hingga chr (126). String biner yang tidak cocok dipecah menjadi beberapa bagian yang lebih kecil.

Sunting: Dikurangi menjadi 326 byte. Terima kasih, Jo King

Sunting: Memperbaiki bug dalam program pembuat kode

Edit: Edit Terakhir

SurpriseDog
sumber
Anda tidak perlu menyimpan string besar oke variabel.
xnor
1

Zsh , 577 byte

coba online !!

S=fxxxxibxxdxxfyzzzyx1yxxxxxxxxyyywl2ij1xxhj1xxhixxxhi5iw2d3c2d2cxl2bxc2az2c2d2ax4x4x4x5wcxpxwdxp15m5w2d2d3c2cxfxhxc1xxc2c2y1xx4x4x4x5wc1f2ixj2kd1e2j15e2f5j2kb1h1hyc1f2gzd2d2fzaf2c1d2ej2b2gf2c1d2ed2d2f1dc1f1hzb1g2hya1h2hya1i1gzb1g1g1dc1l2ed2h2gbz2xx2ibzd1lbzb5jb1dx2xyx1x2fy2yy6x3d3e2a3ixxd2x2b1fxxd6b1fxxd2db1e2a2jwb3e1lb2xxzxxxxx1b3ixxxynxxeh5jf9hd3g3fc2k2eb2a1ix2da2b2g2b2cazxxdxzzazyzyzzezxz1ge1d1d1ge1i1ggyxxia3y4xy3z
for X in ${(s::)S};{case $X in
[a-w])V=$[##$X-96];printf 0%.s {1..$V};;[1-9])V=$[##$X-48];printf 1%.s {1..$V};;[x-z])V=$[##$X-119];printf $[10**$V];;esac}

Digunakan logika penyandian khusus. String Sadalah 421 karakter, mungkin bisa dikompresi lebih banyak. Huruf a-wmewakili berulang 0s. Angka1-9 mewakili pengulangan 1s. Surat x y zmewakili 10 100 1000masing-masing.

Mungkin saya harus mencoba byte-pair encoding atau Ascii85 .

roblogic
sumber
0

Bash , 702 697 byte

xxd -r -p<<X|xz -dc
fd377a585a000004e6d6b4460200210116000000742fe5a3e006d7010c5d
0018698865079cf6752c9e9a501a87a798b4844f9fcfdaaf87733b9d8239
48c816d860a938767f6cb81299f3e8a638effe3068c0e096a8949c81d706
7dff3ec44e5df185b3a48e5b5857724386e8c37cfbd5c856b12614ee78ec
c41df4db3aea71fd3a8fa474905609f78eb3fd66e246557965e4ab6dfd67
efbd9202f542ded9cf98a6401ee2d23afb2f544bd2442c6f428fd612397c
f2c6ec50847ddccc5832185e487712e5a7676b97058d7e485d5a3536166a
44ab3c689c93073cdda73b5306a83c4cd268e79db238bfa2d08ac912a578
75020bc7828342d5a62ce367aff7fd89290336128d119fa4272da2b2a79f
5973c71935af054f2d91c1bd3ea4847a3502d6dc8c975114dacf8a4de600
622d80986dbb0cd00001a802d80d00001b16e2a7b1c467fb020000000004
595a
X

Cobalah online!

Mie9
sumber
0

Ruby , 362 byte

puts"5r0afnfm8wyke8tfy1pwt7xnuaxyh3wodfp7bhsdufyw0xbdp1pumrz2xir652tuc0ss9oec8yad9vefivd66j126wybhefgk2lv38uqqiur11u26q275jk3h2ucithd59awpaenqpqi1pszh52179zw0ddqtbrvo6kyrrgv8c34pqrp83j8estjp63v29t4hqp9yg2hhzjlq1e9zqx6gh20n9lsttimz3nbq060ritrphxaru7quwmv3oujhd9xjddpbacq4bnpf270znhgto59yn0980itylf95pxw9x7rvkvi7mfql1sx46puo8rg4dq0".to_i(36).to_s(2).rjust(1679,?0)

Bilangan bulat ditulis pada basis 36. Pasti ada cara yang lebih efisien untuk mengompresi bilangan bulat, misalnya dengan zlibataubase64 .

Cobalah online!

Eric Duminil
sumber
350 byte jika Anda: (1) menggunakan "% b" untuk memformat alih-alih to_s, (2) prepend? 0 * 6 alih-alih memanggil rjust
GB
0

[C ++ (VC ++) (tetapi diuji dengan gcc juga)], 585 byte

#define l(x,y)for(int x=0;x<y;x++)
void f(){const char*a="02A800505012Y595Y240U180YD0Y1A0Y540YF80V61C618800321A3186BEFBEF80X10Y40W20YFC001F0X1861C620200868639AFBEFBE0W40C0100180Z83003F0607C00C001008041030101860400C430Z19800310C018604040804101804403008802020808080800600C030047580080800107C002174B604E4FEE1C1B80283B20507E40A0C08360U3820Z751554E00AA0Z140ZF80Z7FC00380E00C0060340160CC06611414422448804510Z8420010040Z940079F4F0";int x=1679;l(i,365){int d=a[i],c=0;d-=(d>47&d<58)?48:((d>64&d<71)?55:0);if(d>70&d<91)c=91-d,d=a[i-1];for(c;c>=0;c--)l(j,4){if(x--)cout<<(int)((d&(8>>j))>0);}}}

Cobalah online!

Versi ungolfed (tidak memiliki jeda setelah elemen 1679 dan berjalan hingga 1680):

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    const char arecibo[]="02A800505012Y595Y240U180YD0Y1A0Y540YF80V61C618800321A3186BEFBEF80X10Y40W20YFC001F0X1861C620200868639AFBEFBE0W40C0100180Z83003F0607C00C001008041030101860400C430Z19800310C018604040804101804403008802020808080800600C030047580080800107C002174B604E4FEE1C1B80283B20507E40A0C08360U3820Z751554E00AA0Z140ZF80Z7FC00380E00C0060340160CC06611414422448804510Z8420010040Z940079F4F0";
    int i = 0,j;
    while (i<sizeof(arecibo)-1)
    {   
        char digit = arecibo[i];
        int count=0;
        if (digit >= '0' & digit <= '9')
        {
            digit -= '0';
        }
        else if (digit>='A'& digit<='F')
        {
            digit -=  'A'-10;
        }
        else if (digit > 'F'&digit<='Z')
        {
            //digit does not contain any valid hex digit in this case
            count = 'Z' - digit+1; //digit = Z means repeat 2 more times...
            digit = arecibo[i - 1];
        }
        for (count; count >= 0; count--)
        {
            for (j = 0; j<4; j++)
            {
                cout << (int)(((digit)&(8 >> j))>0);
            }
        }
        i++;
    }
    return 0;
}

sebagai Penjelasan: saya menggabungkan 73 garis output sampel yang diberikan kepada satu garis panjang. saya menyandikannya dalam heksadesimal di mana urutan bit adalah msbfirst (menggunakan program ini https://github.com/Marc-Bender/longBinaryStreamToHex/releases/download/addedErrorCode-4/longBinaryStreamToHex.exe ) saya mempersingkat Output dari sekitar 70 Digit heksadesimal dengan menggunakan huruf 'G' - 'Z' sebagai tanda untuk mengulang Digit terakhir untuk jumlah waktu tertentu (Z = 2 kali lebih banyak, Y = 3 kali lebih banyak ...) sisanya harus cukup jelas untuk Kode-Pegolf . menyalahgunakan preprocessor untuk mempersingkat loop, menyalahgunakan ,Operator dan sejenisnya.

Format Output adalah aliran tanpa gangguan dari nilai 1679 0/1

der bender
sumber
sebelum ada yang bertanya const adalah untuk kompatibilitas dengan VC ++ (apa pekerjaan pengembangan utama dilakukan dengan)
der bender
@ceilingcat saya pikir Anda bahkan bisa lebih pendek dengan mengadu memasukkan Anda di bagian header ...
der bender
554 byte
ceilingcat
0

Perl 6 , 348 byte

{"000000"~:36<5r0afnfm8wyke8tfy1pwt7xnuaxyh3wodfp7bhsdufyw0xbdp1pumrz2xir652tuc0ss9oec8yad9vefivd66j126wybhefgk2lv38uqqiur11u26q275jk3h2ucithd59awpaenqpqi1pszh52179zw0ddqtbrvo6kyrrgv8c34pqrp83j8estjp63v29t4hqp9yg2hhzjlq1e9zqx6gh20n9lsttimz3nbq060ritrphxaru7quwmv3oujhd9xjddpbacq4bnpf270znhgto59yn0980itylf95pxw9x7rvkvi7mfql1sx46puo8rg4dq0>.base(2)}

Berdasarkan solusi Java Benjamin Urquhart .

Menggunakan aliran langsung 0 dan 1 karakter. Tautan di bawah ini memiliki beberapa kode untuk mencetak output.

Cobalah online!

bb94
sumber
0

Tcl , 366 byte

binary scan [binary decode base64 QBUACgpIRKSpqkoCAAAAgAEAsAAAWAAAKgAAHwAAAGA4hhEATFiMYX3f9wEAAAgAIAAAAAQA8AOADwAAGIZjBAQQFsZZ3/d9AAAAAgMIgAEAwQD8YOADMAAIECAIDAgYBgIwwgCAGQCMMIBhICAQIAgYIAIMEAEEBAEBAQFgAAMMIK4BEBAACD4AhC5tICd/h4MdQMFNoOAnUDAQbAAAAAAcBACuqCoHUAUAKADwAQD+A8ABBzAABiyABjNghigoQiQSAaIIACEEgAACACkAni8P] b* z
puts [join [regexp -all -inline .{23} $z] \n]

Cobalah online!

wolfhammer
sumber
0

C ++ (dengan pustaka multi-presisi Gnu), 359 byte

Ini menghasilkan string sebagai satu baris. Ini menggunakan '1' untuk 0, dan '0' untuk 1: /

Ini hanya membaca string yang tertanam sebagai basis 62, dan mencetaknya sebagai basis 2.

Gunakan g++ -g arecibo.cpp -lgmp -lgmpxxuntuk mengkompilasi dan menautkan

#include<gmpxx.h>
main(){mpz_out_str(stdout,2,class_mpz("vuXXKBYAu1hPsJPbFSf49akyFd0bjJbMIV3upYndU8kYFPsXcpRUK6c9qnzLfORxkxGL7ZfoSwgSxFbCrydjHL603QcxexopAzoYAcAyEiENJJU2vQA2zM8NDbeY6nHgL8rfFoPJaclwxx6TeKeOEknEQHzp7C4la3o8xijBQLOVweFZ1CI9dXy2VQhgnuwF5FeW5mQ909pRMxhn6G3RJ1QEtkS7oGMZYHM03fh4fj391IoYLGVv3iUVuTrV2ghz9CUa9hfGYrdhGoVE2w1inYalYl",62).get_mpz_t());}
CSM
sumber
Saya tidak bisa class_mpzmpz_class
mengaktifkannya
0

Perl 6 , 276 byte

:122[q{3tD!gLF['u#.K>'uCG8cvJZ[on1Z<D!	`Fhqq-_V'"qQn+n0h\:b,vXjo&1TMFaW;wvX;eUS
(ueelNSu,y93\kjGI&?UU/38 :ndi4Y5cyC+ME\g7LWaS;QLjtD^L+aVd(XW%gy\8'Eqk-+f72S5J?(r5!m^5px T[Z'3&jd0lZ'/x%#(}.ords].base(2)~~S/.//.say

Cobalah online!

Output sebagai rangkaian 1679 0s dan 1s. Anda dapat memilikinya di baris yang berbeda dengan menambahkan .comb(23)>>sebelumsay .

Penjelasan:

:122["...".ords]                     # Convert the string from base 122
                .base(2)             # To base 2
                        ~~S/.//      # Remove the leading 1
                               .say  # And print

Saya mungkin dapat menyimpan byte dengan menggunakan output sebagai integer 1679 bit sebagai gantinya, atau membalikkan representasi bit.

Jo King
sumber
0

C ++ (gcc) , 748 byte

#define l(X,Y)if(z[i]==#X[0])z.replace(i,1,#Y);
void f(){std::string z = {"ab1eeedala1ebeeheal1mmma1fa1g1eeeeeeea1a1alddhgdbcdgdacedgdacedgdeeedgdndgddhgqiafbcag1dbfa1blceafafbcegcinnnlddhgmddegddhgb1ddelcidbnlddhgqqiafag1hedeblcebcaf1acegcinnnlddhgmhcdegdacdagb1bfda1lcibfhcildacdaga1d1d1almhcheagbqch1blhcmbqgdacachghcmbqgbqch1blmh1d1aga1hfd1aledcd1aledeheaga1heheblmdbqgbcdchga1af1efdga1hedbla1bndala1b1f1ea1fflh1aia1acccl1f1bibff1ldeebf1fla1h1ebfccla1h1ebfbla1bffdalddhgaibedblaieemeeeeelaideeeealdh1ehldcidalhcccidlbihf1hlafdafbgacedefblfachfacagemebeemagema1ma1magbememhgbeb1b1hgbedehghea1edalfcacieacca0"};for(int i=0;i<1751;i++){l(q,cb)l(n,fi)l(m,ae)l(i,c1)l(h,ba)l(g,0l)l(f,0c)l(e,01)l(d,bb)l(c,11)l(b,aa)l(a,00)l(l,\n)printf("%c",z[i]);}}

Cobalah online!

Dengan mengganti substring yang paling sering digunakan dengan karakter baru hingga tidak layak lagi

r3dapple
sumber
735 byte
ceilingcat
0

Python 3 , 331 byte

exit(''.join(bin(i)[3:]for i in b'`UP@JB`IDQKJjjd`@@@@@L@@Ah@@CP@@J`@@_@@@@@LNLLP@FPtXpu}}}|@@@@`@@`@@@A@@A~@@~@@@CCCcDA@DMCGM____@@@@HF@H@L@@PX@_`pO`A`@HA@HHF@`LLB@FHX@@s@@Xa`CC@`HD@``L@b@XAD@PDDA@PD@C@F@X@ck@A@P@BCx@DKi[@gI\x7f\\NC\\@TGY@hOrAPXDFp@@@@@\\D@@zbjipAU@@B`@Gp@@\x7fx@G@\\@X@LAh@lFXCLHhJHQHdPBJH@DHP@H@`@Dh@OOix')[1:])

Cobalah online!

Jitse
sumber