Quat adalah kombinasi dari program quine dan program kucing esolang yang populer .
Tantangan
Tantangannya adalah menulis program kucing standar. Apa pun input pengguna, program akan menggemakan input ke stdout.
Namun, ketika panjang input lebih besar dari 0 dan kelipatan 4, program harus menampilkan kode sumbernya sendiri. Quat berasal dari quatro Portugis , yang diterjemahkan menjadi 'empat'.
Aturan
- Celah standar berlaku
- Anda mungkin tidak membaca kode sumber dari file
- Input kosong harus menghasilkan output kosong
Bonus
Jika panjang input Anda adalah kelipatan 4, Anda bisa mendapatkan bonus 25% dengan mencetak waktu quine length/4
. Bonus 5% lainnya jika Anda memisahkan output dengan spasi (tidak ada spasi tambahan).
Uji kasus
Kasing uji berikut berlaku untuk program in%4=0?cat:self
(bukan bahasa asli).
<empty input> -> <empty output>
input -> input
1234 -> in%4=0?cat:self
12345678 -> in%4=0?cat:self
0% bonus
12345678 -> in%4=0?cat:selfin%4=0?cat:self
25% bonus
12345678 -> in%4=0?cat:self in%4=0?cat:self
30% bonus
Mencetak gol
Ini adalah kode-golf . Kode terpendek dalam byte menang.
\n
menjadi karakter baris baru, untuk 1 byte inputJawaban:
CJam, 23 * 0,75 = 17,25 byte
Standar generalisasi ...
atau
Uji di sini.
Penjelasan
Versi lain menghindari penggunaan variabel dengan menggunakan trik tumpukan-rotasi
]:\
.sumber
Serius,
89 byteCobalah secara Online
(Tekan enter sekali dalam kotak input untuk menguji input kosong.)
Bonus pertama dapat dilakukan dalam 12 byte (16 * .75):
Penjelasan:
Karena beberapa orang tidak menyukai penggunaan quining built-in Seriously, saya menyediakan versi 22 byte ini yang tidak digunakan
Q
untuk referensi:Jika Anda salah satu dari orang-orang itu, pertimbangkan ini versi definitif (untuk saat ini) dan kemudian mulai utas meta tentang penggunaan built-in di quines.
sumber
Pyth, 33 * .75 = 24.75
Test Suite
Standar Pyth quine menggunakan join. Ini hanya quine yang sebenarnya pada juru bahasa online, yang tidak menambahkan baris akhir baru.
Mendapatkan bonus akhir menghasilkan skor 39 * .7 = 27.3:
sumber
Vitsy ,
1817 byteSangat dekat .Yus. Saya sekarang menang di antara quiner non-built-in!menatap seriusTidak ada alasan bagi saya untuk mengejar bonus - mereka akan membuang lebih banyak byte.
Versi quine kecurangan, 12 byte:
sumber
G`
keren! Tampaknya lebih sah daripadaQ
perintah sederhana .Emacs Lisp (323 * 0.75 = 242.25)
Ini menggunakan mekanik kutipan Lisp untuk memberikan kode sumber sebagai input untuk dirinya sendiri.
Versi curang lama
Tidak Disatukan:
sumber
JavaScript,
575672 byte * 0,75 = 54Terima kasih kepada @Neil untuk penghematan satu byte!
Solusi terpendek yang bisa saya temukan adalah cukup mudah.
Jadi, inilah beberapa solusi bonus (lebih menarik):
JavaScript,
8281 byte * 0,75 = 60,75Ini melecehkan
repeat
fungsi melempar pengecualian jika melewati non-integer.JavaScript, 83 byte * 0.70 = 58.1
Yang terakhir ini jelas favorit saya, membagi input pada setiap empat karakter menggunakan regex
/.{4}/
. Jika ada karakter yang tersisa di akhir string saat kitapop
, itu tidak dapat dibagi dengan 4, jadi beri tahu input. Kalau tidak,pop
mengurangi panjang array dengan satu, jadi pada titik ini panjang array sama dengan panjang input / 4. Dalam hal ini, cukupfill
dengan quine danjoin
spasi.sumber
&&
ke||
, letakkan!
sebelum(p=prompt())
, lepaskan<1
dan pindahkanp
untuk berada di bagian dalam?:
.Perl,
6865 * 0,75 = 48,75 byteLihat suite tes online sini.
Rusak
sumber
Mathematica, 229 byte
Semua spasi putih adalah untuk
InputForm
program agar sesuai dengan kode aktualnya.sumber
Javascript ES6, 45 byte
Perpanjangan Bling Quine 21-byte saya. Berharap pencampuran
prompt
dan output fungsi diizinkan.sumber
JavaScript, 33 byte
Solusi lain:
4436 byte38,5 byte
sumber