128 bahasa ini quine ouroboros (program yang menghasilkan program dalam bahasa lain, yang menghasilkan program dalam bahasa lain, (125 bahasa kemudian), yang menghasilkan program asli) cukup mengesankan. Namun sayangnya, ia memiliki jumlah iterasi yang statis.
Tulis sebuah program yang menghasilkan suatu program (tidak harus dalam bahasa lain, tetapi bisa juga), yang menghasilkan suatu program, yang menghasilkan suatu program, dll., Yang setelah n iterasi, mengeluarkan program asli untuk pertama kalinya (yaitu tidak ada perantara program harus sama dengan yang asli, karena jika tidak quine yang mengabaikan inputnya akan bekerja), di mana n adalah integer non-negatif yang disediakan sebagai input. Input tidak boleh hanya berupa angka dalam kode sumber asli (mis. Menempatkan x = <the value of n>
pada awal program Anda), itu harus salah satu dari yang berikut:
- Diberikan sebagai argumen baris perintah
- Baca dari input standar
- Disahkan sebagai argumen ke fungsi, yang mengembalikan / menampilkan program baru.
Untuk tahap perantara di ouroboros, program Anda dapat berupa program yang berfungsi penuh, atau fungsi tanpa argumen, yang, ketika dipanggil, akan mengembalikan / menampilkan yang berikutnya.
Anda mungkin tidak membaca dari file sumber itu sendiri, atau menggunakan builtin seperti quine (saya tidak berpikir ada yang akan melakukan ini, tetapi mungkin ada)
Agar jelas, jika n = 0
, program harus menampilkan kode sumbernya sendiri.
Jika n = 1
, program harus menampilkan program yang berbeda, yang menampilkan kode sumber asli.
Dan seterusnya...
Bytes paling sedikit menang!
Edit:
Saya seharusnya menulis "Untuk tahap menengah di ouroboros, program Anda bisa menjadi program yang berfungsi penuh tanpa input , atau fungsi tanpa argumen". Jika program Anda menampilkan yang berikutnya dalam rantai, lalu menunggu input, tidak apa-apa, tetapi program Anda seharusnya tidak memerlukan nilai asli n.
getInput()
digunakan tanpa input yang disediakan. Atau bisakah kita katakan masukan sesuatu acak yang tidak digunakan untuk iterasi selanjutnya, untuk mencegah kesalahan getInput()
? Aka apakah jawaban Python saat ini valid?
n
, menampilkan program yang merupakan "program awal" dari quine itoboros kami dari n
iterasi, dan bahwa jawaban kami tidak boleh dihitung sebagai salah satu n
iterasi. Apakah ini benar?