Dalam varian quine ini, program Anda harus menampilkan kode sumbernya yang dialihkan melintasi diagonal dari kiri atas ke kanan bawah. Sebagai contoh:
program anda di empat baris
output
yof
ono
u u
r r
p l
r i
o n
g e
r s
a
m
Spasi putih dalam output tidak sewenang-wenang. Spasi muncul dalam dua situasi: di mana ada spasi di dokumen asli (mis. Antara r
dan l
di kolom keempat) dan di mana perlu untuk membubuhi karakter (misalnya semua spasi di kolom pertama.) Keduanya diperlukan, dan spasi tidak dapat muncul di mana saja lain di output.
Satu baris baru yang tertinggal dalam output secara opsional dapat diabaikan. Mengejar baris baru dalam kode sumber tidak berpengaruh pada output, dan baris baru terdepan dalam kode sumber harus ditangani seperti pada contoh di atas. Asumsikan bahwa setiap karakter yang bukan baris baru memiliki lebar satu kolom dan tinggi satu baris, meskipun untuk karakter seperti tab ini dapat mengakibatkan output yang jelek.
Solusi Anda harus memiliki setidaknya dua baris dengan setidaknya dua karakter non-baris baru masing-masing, dan tidak boleh transpos sendiri (output tidak dapat identik dengan sumber.)
Quina kecurangan yang membaca dari file yang berisi kode sumbernya, menarik data dari URL, menggunakan quining built-in, dan sebagainya tidak diizinkan.
Ini adalah kode golf: kode terpendek dalam byte menang.
Jawaban:
CJam, 14 byte
Uji di sini.
Meskipun lebih pendek, mungkin sedikit kurang menarik daripada solusi Fission.
Penjelasan
sumber
Fission , 17 byte
Masih bahasa favorit saya untuk quines ...
Cobalah online!
Penjelasan
Ini sangat mirip dengan quine Fission dasar . Bahkan, jika bukan karena aturan "harus memiliki setidaknya dua baris dengan setidaknya dua karakter non-baris baru", saya bisa mengubah dan mengganti
R
denganD
. Aturan itu membuat segalanya sedikit lebih menarik, karena kita perlu mencetak baris lain.Aliran kendali dimulai
D
dengan atom tunggal menuju selatan. Karena itu hits"
itu akan membungkus dan mencetakuntuk STDOUT, mirip dengan bagaimana hal itu di quine normal.
'!
kemudian setel massa atom ke kode karakter!
. Ini0
adalah teleporter yang mengangkut atom ke kolom kedua, di mana masih bergerak ke selatan.Dengan
+
kami menambah massa atom ke nilai"
.!N!
kutipan cetak, linefeed, kutipan. STDOUT sekarang terlihat seperti ini:Setelah melilit, atom mengenai yang lain
"
dan sekarang mencetak baris kedua kata demi kata:Kami sudah selesai sekarang. Atom menggunakan teleporter sekali lagi, dan mendarat di
;
mana menghancurkannya dan dengan demikian mengakhiri program.Saya kira bit paling rapi di sini adalah meletakkan satu
"
di bagian bawah dan yang lain di bagian atas sehingga saya dapat mencetaknya sekaligus tanpa harus menetapkan nilai!
sekali lagi (karena akan ditimpa dengan memasukkan mode string lagi).sumber
Javascript ES6, 90 byte
Tidak buruk, tidak buruk.
Penjelasan
Inilah kerangka kerja standar quine:
Untuk memodifikasi, saya hanya membagi string quine sepanjang baris baru dan karakter untuk membuat matriks karakter, diubah menggunakan 2 fungsi peta, dan bergabung untuk membuat output.
sumber
Stax , 23 byte
Cobalah online!
Adaptasi
"34bL"34bL
quine, yang didasarkan pada ide yang digunakan dalam quines dalam banyak bahasa.sumber
Befunge-93 , 57 byte
Ini berfungsi dengan meletakkan setiap karakter di kolom pertama di tumpukan (kecuali kutipan itu sendiri), lalu mencetak setiap item dari tumpukan. Setelah itu, ia mencetak kutipan, mencetak baris baru, dan kemudian pindah ke kolom kedua. Itu melakukan hal yang sama tanpa mencetak baris baru.
Anda dapat mengujinya di tautan dalam judul, tetapi Anda harus menyalin-tempel kode ke jendela sendiri. Jika Anda menekan tombol 'lambat', itu akan menunjukkan jalur yang diambil pointer dan tumpukan pada saat itu.
sumber
"
satu kali saja, sehingga Anda bisa menggeser beberapa kode dari kolom pertama ke yang kedua.Python 2,
917569 byteCobalah online
Penjelasan:
Ini menggunakan modifikasi dari quine standar:
Setelah modifikasi:
Ini akan cukup jika satu baris diizinkan. Kemudian, saya menambahkan dua karakter ke baris ke-2 untuk memenuhi persyaratan itu. The
#
karakter pada baris kedua bisa diganti dengan apa pun, asalkan Anda mengubah mereka dalam baris pertama, juga, dan itu membuat program sintaksis valid.Untuk mencetaknya dengan benar sekarang, saya harus mencetak
#
pada akhir dari dua baris pertama. Jadi saya menghapus dua karakter pertama dari strings
, dan mencetaknya dengan#
sebelum mencetaks%s
. Saya meletakkan salah satu#
di awals
untuk menyimpan beberapa byte dengan menghapus literal baris baru.sumber