Tantangan
Dalam tantangan ini, Anda menentukan bahasa sumber S dan bahasa target T . Tugas Anda adalah menulis program berikut Pdalam bahasa ini S. Jika program yang valid Qdalam bahasa Tdiberikan sebagai input P, itu akan menampilkan program yang valid Rdalam bahasa Tyang tidak memerlukan input dan output Q(R), yaitu, program yang Qditerapkan pada kode sumber R. Selain itu , Anda harus mempresentasikan dalam jawaban Anda program contoh nontrivial Q(semakin menarik, semakin baik, meskipun Anda tidak mendapat poin untuk ini), program yang dihasilkan R, dan output dari R. Ini kode-golf, jadi kode terpendek untuk Pmenang.
Dengan kata lain, ini adalah tantangan tentang menulis "konstruktor quine universal" yang dapat membuat jenis quines umum yang sewenang-wenang.
Klarifikasi
- Sumber dan bahasa target Anda mungkin identik.
- Program
Pharus mengambil satu string sebagai input (dari STDIN atau yang setara), dan output satu string (ke STDOUT atau setara), sebagaimana seharusnya setiap program outputR. - Program input
Qjuga harus mengubah string menjadi string lain, tetapi bentuknya lebih fleksibel: mereka dapat berupa fungsi string-ke-string, potongan kode yang memodifikasi variabel dengan nama tertentu, potongan yang memodifikasi tumpukan data jika bahasa target Anda memiliki satu, dll. Anda juga dapat membatasi lebih jauh bentukQdengan menyatakan bahwa, misalnya, mereka mungkin tidak mengandung komentar apa pun. Namun, Anda harus dapat mengimplementasikan fungsi string-ke-string yang dapat dikomputasi sebagai program inputQ, dan Anda harus secara eksplisit menyatakan bagaimana mereka berfungsi dan kendala apa lagi yang Anda tempatkan pada mereka. - Program keluaran
Rharus benar-benar quine (digeneralisasi), jadi ia tidak boleh membaca input apa pun (input pengguna, file, dll.) KecualiQmelakukannya. - Celah standar tidak diijinkan.
Sebuah contoh
Misalkan saya memilih Python sebagai bahasa sumber saya, dan Haskell sebagai bahasa target saya, dan saya selanjutnya mengharuskan program input harus definisi satu-baris dari suatu String -> Stringfungsi bernama f. Jika saya memberikan program string-reversing
f x = reverse x
sebagai input ke program Python saya P, itu akan menampilkan kode sumber program Haskell lain R. Program ini mencetak untuk STDOUT kode sumber R, tetapi dibalik. Jika Pdiberikan fungsi identitas
f x = x
sebagai input, program output Radalah quine.