Selamat Malam Ladies and Gentleman.
Malam ini - kami memiliki tantangan kode. Sebuah kompetisi yang akan ditentukan bukan dalam jumlah poin (a la Asteroid) tetapi hanya apakah Anda dapat menyelesaikannya (a la Zelda). Dan demi perbandingan, jumlah byte (eh ... tapi Anda bilang ...).
Tantangan Anda adalah membuat quine tunggal yang dikompilasi di WhiteSpace dan bahasa lain pilihan Anda. Kedua quine harus memiliki output yang benar-benar identik (yang sebagai quine benar-benar identik dengan kode sumber). Panjang quine Anda harus lebih dari 3 byte.
Skor Anda adalah ukuran kode sumber Anda dalam byte.
Mengingat bahwa tantangan ini melibatkan WhiteSpace, harap luput dari jawaban Anda sehingga jelas - lebih disukai dalam gaya C. Skor Anda adalah sumber asli dalam byte - bukan versi yang diloloskan.
Semoga berhasil.
Jawaban:
Whitespace dan Perl,
992975 karakterSelamat malam tuan dan Nyonya.
Untuk memulainya, inilah kiriman saya yang disandikan di base64, yang menurut saya merupakan cara terbaik untuk mengkomunikasikan program ruang putih yang besar. (Anda benar-benar tidak ingin menggunakan penyandian yang membuat ruang putih apa adanya, jadi tidak ada gunanya memilih sesuatu yang lebih "dapat dibaca".)
Berikut adalah kutipan yang menyoroti semua bagian sumber yang terlihat.
⇥
digunakan untuk menunjukkan tab dan↲
untuk menunjukkan baris baru.Perl adalah pilihan alami untuk bahasa kedua dalam tantangan ini, menjadi salah satu bahasa tujuan umum terbaik untuk menulis quine ringkas. Ku quine terpendek saya adalah 19 byte:
- dan Anda dapat melihat bagaimana itu adalah benih untuk setengah Perl dari quine ganda. Quine Space terbaik saya, sebagai perbandingan, panjangnya 541 byte. (Meskipun yang lebih pendek memang ada - 445 byte adalah yang terbaik yang pernah saya lihat.)
Dari sudut pandang penerjemah Perl, baris pertama dari file sumber quine ganda berisi dua pernyataan yang membentuk keseluruhan program, karena konten yang tersisa adalah dua string yang dikutip. String pertama adalah baris Perl yang berulang, dan dibatasi oleh baris ketiga yang kosong. String kedua adalah semua spasi putih, dan berjalan dari baris keempat sumber sampai ke
0
pembatas di bagian bawah file.Ketika diambil sebagai program Whitespace, empat baris pertama berisi tiga instruksi yang sebagian besar tidak berguna. (Efeknya adalah untuk mendorong dua nilai nol ke stack, dan kemudian membuang yang kedua.) Mereka dimasukkan hanya untuk mendapatkan dengan aman melewati baris baru yang diperlukan oleh program Perl - program yang sebenarnya dimulai setelah itu. Daripada mengutip sumber yang tidak dapat dibaca lebih jauh, ini adalah parafrase dari instruksi yang membentuk program Whitespace, dalam format seperti perakitan:
Angka-angka raksasa di atas adalah apa yang harus digunakan oleh pengguna Whitespace sebagai pengganti string yang sebenarnya. Jangan repot-repot mencoba menjalankan ini pada interpreter Whitespace yang tidak memiliki dukungan bignum yang tepat.
Akhirnya, inilah programnya lagi, tetapi kali ini dengan lolos gaya-C, karena diminta secara khusus:
sumber