Tugas
Anda akan diberi string dalam input yang hanya terdiri dari karakter dari a
hingga z
, yaitu input akan cocok dengan regex/^[a-z]*$/
.
Output Anda harus berupa program lengkap dalam bahasa yang sama, yang kode sumbernya berisi input, dan merupakan quine yang tepat.
Contoh
Program Anda akan menerima input abc
dan output:
...abc...
Di atas harus merupakan program lengkap dalam bahasa yang sama yang tidak mengambil input dan output:
...abc...
yaitu output sendiri.
Mencetak gol
Ini adalah kode-golf . Jawaban terpendek dalam byte menang.
Jawaban:
Python 3,
5761 byteMengambil dasar python 3 quine dari sini dan mengganti nama variabel dengan input.
Catatan: Seperti yang ditunjukkan oleh Hyper Neutrino dalam komentar, ini tidak bekerja untuk kata kunci dilindungi sepertifor
,if
, dllMenambahkan karakter yang tidak diakhiri dengan kata kunci yang dicadangkan seperti
'x'
atau nomor apa pun yang memperbaikinya. (Ørjan Johansen).sumber
"for"
, atau kata lain yang dicadangkan dalam Python.'x'
.Jelly , 9 byte
Generator
Cobalah online!
Bagaimana itu bekerja
Quine
Jika inputnya adalah
quine
, program berikut dihasilkan.Cobalah online!
Bagaimana itu bekerja
Ini adalah quine Jelly standar. Pertama,
menetapkan argumen kiri dan nilai kembali ke string
"quine\nØv"
.Kemudian,
Ṙ
cetak representasi string (kode dari blok sebelumnya) dan mengembalikan string yang tidak diubah.Setelah itu,
v
ambil argumen kiri dan meneruskannya sebagai input ke program JellyDi semua program Jelly, hanya tautan utama (ditentukan pada baris terakhir) yang dieksekusi, sehingga baris pertama diabaikan seluruhnya.
Akhirnya,
Øv
tetapkan nilai kembali ke"Ṙv"
, yang dicetak secara implisit ketika program luar selesai.sumber
Haskell , 51 byte
q
mengambil string dan mengembalikan string.Cobalah online!
Contoh output untuk
putStr$q"test"
:Cobalah online!
fst
untuk mengekstrak teks utama.show
untuk mengubah seluruh tuple menjadi string.mappend
untuk menggabungkan dua fungsi sebelumnya. Mudahnyamappend
pada dua fungsi memberikan fungsi yang menerapkan setiap fungsi ke argumennya dan menggabungkan hasil denganmappend
untuk tipe hasil (di sini rangkaian string).sumber
Underload , 14 byte
Cobalah online!
Digunakan sebagai
(test)(~aSaS(:^)S):^
- yang merupakan quine.Bagaimana itu bekerja
(test)
dan(~aSaS(:^)S)
string literal, jadi tempatkan diri mereka di tumpukan, dengan yang terakhir di atas.:
menduplikasi(~aSaS(:^)S)
string di atas tumpukan, lalu^
menjalankan isinya sebagai subprogram.~
menukar dua elemen teratas pada stack, jadi sekarang(test)
adalah yang teratas.a
membungkus(test)
tanda kurung tambahan.S
mengambil string((test))
di atas tumpukan, dan mencetaknya tanpa tanda kurung luar (yang hanya sintaks literal).aS
cetak sisanya(~aSaS(:^)S)
di tumpukan dengan cara yang sama (dengan tanda kurung).(:^)S
cetak final:^
.sumber
)(
sebagai input, saya pikir.a
-z
.Underload , 14 byte
Cobalah online!
Pendekatan berbeda dari jawaban Underload lainnya; alih-alih menjadi quine, ini membangun quine. Menariknya, ia keluar ke jumlah byte yang sama. Ini adalah fungsi yang mengambil argumennya dari stack dan output ke output standar.
Penjelasan
Fungsi yang dihasilkan terlihat seperti ini:
Dengan kata lain, itu mencetak string literal yang berisi dirinya, diikuti oleh
:^
. Ini jelas quine (karena apa yang baru saja dicetak sama dengan kode yang kita jalankan untuk menjalankannya di tempat pertama).sumber
a
, selama Anda tidak keberatan kesalahan segmentasi dicetak ke stderr ketika input berisia
.(
menjadi karakter yang muncul dalam input, semua program tidak akan melakukan apa-apa atau crash. Saya bahkan tidak berpikir itu khusus untuk TIO; program tidak valid, tetapi sudah menghasilkan output yang diinginkan pada saat crash.V , 9 byte
Cobalah online!
Ini adalah modifikasi dari standar V quine , dan saya bangga bahwa ini hanya satu byte lebih lama.
Hexdump:
Penjelasan:
Kemudian, rekaman secara implisit berhenti dan diputar. Ini akan menghasilkan output berikut:
Karena
j
akan merusak pemutaran makro, tidakHello
ada yang bisa dijalankan.sumber
Python 2, 38 byte
Meskipun input hanya diperlukan untuk mendukung
a-z
, ini harus bekerja dengan input baris tunggal yang tidak mengandung NUL byte.Cobalah online
Untuk input
abc
, quine yang dihasilkan adalah:Cobalah online
sumber
RProgN 2 , 15 byte
Dijelaskan
Menggunakan format
dimana
%q
input qouted, membangun quine rasayang merupakan quine RProgN2 standar,
{']C'.}]C
Itu, sebelum selesai, menambahkan dan menghancurkan string yang dimasukkan.Cobalah online!
sumber
Retina , 14 byte
Hitungan byte mengasumsikan penyandian ISO 8859-1.
Cobalah online!
Untuk input
x
, output ini:Penjelasan
Outputnya adalah modifikasi minor dari quine standar . Kami cukup menggunakan regex
|x
alih-alih regex kosong. Karena|
masih mengizinkan (dan memprioritaskan) dan mencocokkan kosong, fungsi itu sendiri tidak terpengaruh, dan karenax
hanya akan berisi surat, itu dijamin sintaks regex yang valid itu sendiri.Pencetakan ini sebenarnya menggunakan teknik yang mirip dengan quine itu sendiri. Untuk menghindari duplikasi quine, kami
¶\(*S1`|
hanya memasukkan sekali ke awal string. Itu persis setengah dari kode sumber. Untuk mencetaknya dua kali tanpa linefeed, kami menggunakan konfigurasi\(\
, yang membungkus seluruh program dalam sebuah grup dan membuat kedua stage itu sendiri dan juga grup yang memuatnya mencetak hasilnya tanpa linefeed.sumber
Japt , 14 byte
Uji secara online! Untuk input
abc
, outputyang menghasilkan sendiri. Uji secara online!
Penjelasan
Ini adalah ekstensi dari kuad Japt yang mampu-payload standar:
Satu-satunya perbedaan adalah bahwa kita menambahkan
ª`abc
di akhir, yang pada dasarnya JavaScript||"abc"
. Karena hasil dari bagian pertama selalu berupa string yang tidak kosong (benar), yang||
tidak pernah dijalankan.Ada beberapa versi alternatif dengan panjang yang sama:
sumber
CJam ,
1614 byteCobalah online!
Bagaimana itu bekerja
Yang menghasilkan sesuatu seperti
"`_~\"test\";"`_~"test";
.sumber
JavaScript, 21 byte
sumber
Perl 5 , 35 byte
Cobalah online!
sumber