7 , 23 karakter, 9 byte
54340045141332401057403
Cobalah online!
Ini adalah tantangan yang cukup sulit dalam bahasa yang seluruhnya terdiri dari angka, tetapi saya berhasil…
Ini hanya 9 byte dalam encoding 7's. (Sebenarnya, ini 8⅜ byte (23 × ⅜ - ¼ karena dua bit terakhir yang tertinggal 1 bit dapat dihilangkan), tetapi untuk pertama kalinya, persyaratan PPCG untuk mengumpulkan hingga seluruh jumlah byte sebenarnya merupakan keuntungan karena itu berarti bahwa 1 bit tambahan tambahan diperlukan dan karenanya tidak dilarang oleh pertanyaan.) Sebuah dump hex reversibel:
00000000: b1c0 2530 b6a0 22f8 1f ..%0.."..
Tantangan utama penulisan program ini dalam 7 adalah bermain golf di bawah 10 byte (seperti menulis 7 tanpa menggunakan 0
atau 1
cukup sulit.) Ini menggunakan struktur yang sama dengan program "Hello world" standar:
5434004514133240105 7 403
5434004514133240105 memerintahkan 0-5 menambahkan literal ke ruang data
7 mulai bagian baru dari ruang data
403 literal lain ditambahkan ke ruang data
{implisit: eval bagian terakhir sebagai perintah}
4 swap bagian 1 dan 2 dengan bagian kosong antara
6 merekonstruksi perintah yang akan membuat output bagian 1
3 (+ beberapa efek lain yang tidak kita pedulikan)
Dengan kata lain, kita mulai dengan membuat dua bagian ruang data; kami memiliki dua literal, yang masing-masing mendorong urutan perintah di sana. Bagian kedua (mereka mendorong stack-style jadi push pertama = pop terakhir) adalah urutan perintah yang cukup arbitrer tetapi didorong menggunakan urutan perintah 5434004514133240105
(sehingga menghasilkan urutan data 5434664574733246765
; ketika membahas 7 dalam teks, saya biasanya menggunakan font normal untuk perintah yang mendorong literal, dan berani untuk literal yang dihasilkan yang sesuai). Bagian pertama didorong menggunakan urutan perintah 403
, menghasilkan 463
. Kemudian bagian pertama disalin kembali ke program (perilaku implisit dari 7).
Perintah 463
ini sekarang terdiri dari perintah (tebal) yang melakukan sesuatu dengan segera, bukan perintah (tidak tebal) yang hanya mendorong literal. 4
mengatur ulang bagian untuk mendapatkan "string literal" kami ke bagian pertama. Kemudian 0
lakukan operasi yang paling dikenal untuk 7: mengambil bagian dari ruang data, dan merekonstruksi urutan perintah yang paling mungkin membuatnya. Dalam kasus di mana urutan perintah asli adalah semua 0
- 5
, ini adalah 100% akurat (tidak mengherankan, karena perintah-perintah itu murni mendorong data dan dengan demikian meninggalkan bukti yang jelas tentang apa yang mereka lakukan), sehingga kami mendapatkan urutan asli kami 5434004514133240105
kembali. Akhirnya, 3
cetaklah.
Jadi hal yang tersisa untuk dilihat di sini adalah pengkodean string. Ini memiliki bahasa khusus domain sendiri:
5434004514133240105
5 change encoding: 6 bits per character
43 select character set: digits and common symbols
40 '9'
04 space
51 select character set: uppercase letters
4133240105 'B' 'Y' 'T' 'E' 'S'
(Tidak ada "set karakter pilih: huruf kecil" di set karakter "digit dan simbol umum" - Anda harus menggunakan set karakter yang berbeda terlebih dahulu - jadi saya harus menggunakan huruf besar untuk bermain golf ini cukup pendek agar muat di bawah yang efektif 10) batas -byte.)