Latar Belakang
Seperti yang diketahui oleh kebanyakan PPCG, quine adalah program yang mengeluarkan kode sumbernya sendiri ketika dijalankan; dan jarak Levenshtein antara dua string adalah jumlah minimum penyisipan, penghapusan, dan pengeditan yang diperlukan untuk mengubah satu string menjadi yang lain. Dalam tantangan ini, kami menggabungkan dua konsep menjadi "levenquine": program yang menampilkan kode sumbernya sendiri, tetapi dengan satu instance dari satu karakter yang dimasukkan, dihapus, atau diganti dengan karakter yang berbeda. (Dengan kata lain, jarak Levenshtein antara program dan outputnya adalah 1.)
Tugas
Tulis levenquine sehingga outputnya adalah levenquine, output dari program itu juga levenquine, dan seterusnya. Selain itu, pada titik tertentu, urutan menjalankan program berulang kali, menjalankan outputnya, menjalankan output outputnya, dll. Pada akhirnya harus kembali ke program semula.
Ada satu batasan tambahan yang membuat segalanya lebih sulit: harus ada dua program berbeda di suatu tempat dalam siklus ini yang tidak memiliki karakter yang sama (dengan kata lain, tidak ada karakter yang ada dalam satu program dan juga ada dalam program lain). Program Anda karena itu harus secara bertahap mengubah dirinya menjadi rangkaian karakter yang berbeda, dan kembali lagi.
Jika Anda menggunakan bahasa pemrograman yang memiliki boilerplate yang tidak terhindarkan yang diperlukan dalam setiap program yang menghasilkan output (mis. Hanya memiliki satu cara untuk menulis print
pernyataan dan tidak ada bentuk output lain yang berguna), Anda dapat memperlakukan boilerplate itu sebagai tidak ada untuk tujuan tersebut menentukan karakter yang memiliki dua program yang sama. Anda harus, bagaimanapun, masih menghitung bahwa boilerplate untuk tujuan menentukan properti Levenquine dari kode.
Klarifikasi
- Setiap "program" dalam siklus dapat berupa program lengkap atau fungsi. Mereka tidak semua harus sama, misalnya beberapa bisa menjadi program penuh dan beberapa bisa menjadi fungsi.
- Tidak semua program dalam siklus perlu menggunakan bentuk output yang sama. Sebagai contoh, beberapa dapat mengeluarkan melalui keluaran standar, dan beberapa dapat mengeluarkan melalui kesalahan standar.
- Program Anda akan dijalankan tanpa input (atau dalam bahasa yang memerlukan input untuk melakukan apa saja, input sesederhana mungkin).
- Aturan quine yang tepat berlaku; walaupun Levenquine bukan quine yang sebenarnya, Anda mungkin tidak melakukan apa pun yang ilegal saat menulis quine yang tepat. Secara khusus, program nol tidak pernah merupakan keluaran yang valid dari Levenquine yang tepat (dan karenanya tidak dapat menjadi bagian dari siklus Anda).
- Pembatasan Levenquine diukur dalam hal karakter, bukan byte (misalnya
ê
satu karakter bahkan ketika sumber dikodekan dalam UTF-8). Pembatasan no-karakter-dalam-umum juga diukur dari segi karakter. Kondisi kemenangan, bagaimanapun, dihitung dalam byte.
Kondisi kemenangan
Silakan kirimkan setidaknya tiga program berikut dari siklus: program terpendek (diukur dalam byte); dan dua program dari siklus yang tidak memiliki karakter yang sama. Mungkin saja keduanya sama, dan mungkin juga ketiganya berbeda. Skor didasarkan pada panjang dalam byte dari program terpendek, dengan yang lebih pendek lebih baik, sehingga membuat ini semacam kompetisi kode-golf .