Objektif:
Kode dua program di mana masing-masing program menghasilkan kedua kode sumber interlaced per karakter seperti ritsleting, Quine celah ganda. Output dari Double-slit Quine dimulai dengan karakter pertama dari kode sumber program pertama. Jika kode sumber dari salah satu program lebih pendek dari yang lain, maka sisa output harus diisi dengan sisa kode sumber yang lebih panjang.
Aturan:
- Anda dapat menggunakan bahasa pemrograman apa pun untuk kedua program, tidak perlu bahasa pemrograman yang sama untuk keduanya.
- Program Anda tidak boleh mengambil input apa pun dari file, nama file, jaringan, program lain, atau apa pun.
Kriteria wajib:
- Ada tangkapan, di suatu tempat di output kata
QUINE
dalam huruf kapital harus ada, tidak terputus. - Anda harus menyatakan dua bahasa pemrograman apa yang Anda gunakan. Jika Anda menggunakan bahasa pemrograman yang sama untuk keduanya, maka Anda hanya perlu menyatakan satu bahasa pemrograman.
- Kedua program harus dapat dieksekusi, atau ditafsirkan, masing-masing independen dari program lain.
Contoh:
Memiliki contoh kode sumber program satu ini :
"QIE"
Memiliki contoh ini kode sumber program dua :
"UN"
Maka output Double-slit Quine yang valid dari kedua program harus:
""QUINE""
Ini adalah kode-golf, byte terkecil ketika menjumlahkan panjang kedua kode sumber, dan jelas juga panjang setiap output program, menang!
A
danXYZ
akan disisipkan?AXYZ
?.+
atauz
bekerjaJawaban:
CJam,
4947 bytedan
keduanya cetak
Cobalah online: program 1 , program 2 , bukti validitas
Bagaimana mereka bekerja
Program 1 selesai di sini dan memiliki representasi string dari seluruh kode sumbernya (yang masing-masing karakter diulang dua kali) serta string e # QUINE pada stack.
Program 2 juga mem-parsing
e#QUINE
, yang merupakan komentar.Dalam kedua kasus, CJam mencetak dua string secara otomatis, menghasilkan output yang disebutkan di atas.
sumber
Serius,
465642 byteHex Dump:
Program kedua adalah program yang tepat ini terbalik. Itu memang mengandung karakter yang tidak terlihat, tetapi jumlah byte benar. Kedua program menghasilkan string palindromik ini:
(Untuk beberapa alasan ini menampilkan karakter yang tidak terlihat ketika mengeluarkannya di terminal saya. Saya tidak benar-benar mengerti bahwa byte 7F.)
Bagaimana itu bekerja:
Sisa program tidak dieksekusi.
Lalu ke arah lain:
Pada titik ini, kami sekarang menjalankan program pertama di atas, jadi eksekusi berlanjut seperti yang dijelaskan di sana.
Saya sangat mengeksploitasi fakta bahwa beberapa perintah tidak melakukan apa pun untuk string atau tumpukan kosong di sini. Saya juga mengeksploitasi perilaku tak terduga
t
ketika hanya ada satu item di stack. Jangan berharap program ini berfungsi dalam versi Serius di masa mendatang.Karena versi online dari interpreter Serius terus rusak, Anda harus mengunduh penerjemah dan menjalankannya di mesin Anda sendiri untuk mengujinya.
sumber
GolfScript, 46 byte
dan
keduanya cetak
Cobalah online: program 1 , program 2 , bukti validitas
Bagaimana itu bekerja
Kode sumber program 2 juga mem-parsing
QUINE\n
, yang merupakan dua token yang tidak ditentukan.sumber
Perl, 61 + 60 = 121 byte
Program 1:
Program 2:
Saya pikir saya akan mencobanya dalam bahasa non-golf. Ini pada dasarnya hanya konstruktor quine universal di Perl yang dimodifikasi untuk menggandakan setiap karakter sebelum mencetaknya, dan menambahkannya
QUINE
sampai akhir. Maka kita hanya perlu menempel komentar di akhir kode untuk mengkompensasi teks yang ditambahkan.(Saya menulis ini tanpa benar-benar melihat jawaban yang lain. Ternyata akan mungkin untuk menghemat satu byte dengan meletakkan seluruh komentar dalam satu program, tetapi saya tidak yakin apakah saya hanya akan menyalin algoritma secara terang-terangan seperti itu.)
sumber