7 , 2 byte
Karakter yang membentuk program ini adalah:
240223
Saat melihat file dalam editor, kemungkinan akan mencoba menafsirkannya sebagai ASCII, dalam hal ini terlihat seperti ini:
P$
Cobalah online!
Program mengambil input. Saya berasumsi di sini bahwa inputnya ada pada EOF; jika Anda memberikan input, kemungkinan itu akan macet.
Penjelasan
Iterasi nol
240223
240223 Tambahkan 240223 ke elemen tumpukan atas
Seluruh program di sini pasif, sehingga akan menambahkan versi aktifnya sendiri ke elemen tumpukan teratas (yang awalnya kosong). Program ini dalam loop implisit, yang mengevaluasi elemen tumpukan atas (sambil meninggalkannya di tumpukan) setiap iterasi. Jadi versi aktif akan berjalan. (Hampir semua 7 program mulai seperti ini.)
Iterasi pertama
240223
2 Menyalin elemen tumpukan atas
40 Melarikan diri dari elemen tumpukan kedua, menukarnya ke atas
2 Menyalin elemen tumpukan atas
23 Output elemen tumpukan atas
Sebelum perintah output, tumpukan berisi dua salinan 240223(yaitu pasif). Yang teratas mendapat output (tanpa efek yang bisa diamati selain memilih format output 2, "angka"), yang di bawah tetap dan menjadi program untuk iterasi berikutnya.
Iterasi kedua
240223
240223 Tambahkan 240223 ke elemen tumpukan atas
Sama dengan iterasi nol, kan? Tidak terlalu; stack memiliki konten berbeda. Tumpukan sekarang di 240223bawah .240223240223
Iterasi ketiga
240223 240223
240223 Menambahkan 240223 ke elemen tumpukan atas
2 Menyalin elemen tumpukan atas
40 Melarikan diri dari elemen tumpukan kedua, menukarnya ke atas
2 Menyalin elemen tumpukan atas
23 Menghasilkan elemen tumpukan atas
Ini menghasilkan elemen tumpukan yang memiliki tiga 6s-dan-0s lebih banyak daripada 7s-and-1s. Output format 2 mengartikan ini sebagai permintaan untuk memasukkan nomor. Kita membaca EOF, dengan konsekuensi bahwa elemen berikutnya pada stack dikurangi menjadi string yang panjangnya nol. Namun, karena bug (yang tampaknya agak bermanfaat dan dapat dipromosikan ke fitur?), Ini hanya terjadi setelah mulai dijalankan. Tumpukan sekali lagi memiliki dua elemen, di 240223bawah , tetapi versi yang lolos dari elemen teratas ini , sekarang sedang dijalankan.24022324022324022372402236240223240223
Iterasi keempat
7 240223 6 240223240223
7 240223 6 240223240223 Tambahkan 240223 240223240223 di bagian atas tumpukan
Bagian atas tumpukan adalah string nol panjang, jadi kami pada dasarnya hanya menghapus program yang berakhir di sana.
Iterasi kelima
240.223 240.223.240.223
240.223 Append 240.223 ke atas tumpukan elemen
2 Copy atas tumpukan elemen
40 Escape elemen tumpukan kedua, swapping ke atas
2 Copy atas tumpukan elemen
23 Output atas tumpukan elemen
2 Copy atas tumpukan elemen
40 Luput kedua stack element, menukarnya ke atas
2 Salin elemen stack atas
23 Output elemen stack atas
Ini sangat mirip dengan iterasi ketiga. Namun ada dua perubahan. Pertama, sekarang ada 4 lebih banyak 0s-dan-6s daripada ada 1s-dan-7s, jadi kami akan mencoba untuk memasukkan karakter dari input standar daripada angka. Kami masih mendapatkan EOF, dan akhirnya mengurangi bagian atas tumpukan menjadi string yang panjangnya nol. Selanjutnya, ada kode yang berjalan setelah reduksi, sehingga iterasi berikutnya tidak segera dimulai. Sebaliknya, kami melakukan banyak operasi pada elemen panjang nol itu, berakhir dengan tiga elemen panjang nol. Kami mengeluarkan satu, dua lainnya menghilang (karena ini adalah akhir dari iterasi), dan kami pada dasarnya di mana kami berada di akhir iterasi ketiga.
Iterasi keenam
Program yang kami salin dari atas tumpukan sekarang . Semuanya berfungsi seperti pada iterasi sebelumnya sampai kita mencapai instruksi output pertama (yang pertama ). Ini sekarang memiliki lima 0s-dan-6s lebih banyak daripada 1s-dan-7s, sehingga menetapkan mode di mana instruksi output berikutnya akan diinterpretasikan sebagai permintaan untuk mengubah format output. Ini juga mengarah pada perubahan perilaku yang mencolok; karena tidak ada permintaan input, kami tidak membaca EOF, dan karenanya tidak memicu konsekuensi dari membaca EOF (elemen tumpukan atas yang baru dikosongkan), dan dengan demikian versi yang lolos dari elemen tumpukan asli tetap daripada menjadi dihapus. Ini artinya selanjutnya240223240223240223240223232402tidak lagi menjadi no-op, membuat dua salinan dari elemen stack yang di-escape (yaitu mereka sekarang di-escape-ganda). Kami output satu, mengatur format output ke 7 ("sama dengan input"); format output ini tidak memiliki perintah I / O, dan tidak ada perintah untuk mengubah format, jadi kami akan tetap di dalamnya selama sisa program. Kami juga menampilkan 724022362402232402232402232402236(dalam penyandian yang sama dengan input) ke keluaran standar.
Bagaimanapun, cukup jelas apa yang akan dilakukan program dari titik ini dan seterusnya: ini adalah kombinasi menambahkan berbagai jumlah salinan yang berbeda-beda lolos 240223ke bagian atas tumpukan, keluar dari bagian atas tumpukan, dan mengeluarkan salinan dari bagian atas tumpukan. Dari titik ini dan seterusnya, elemen tumpukan atas tidak pernah dihapus (karena kita tidak pernah membaca EOF), sehingga hanya tumbuh dan tumbuh dan tumbuh. Pelarian berkala memastikan bahwa output tidak pernah berulang (karena itu berarti bahwa setiap iterasi, output pertama dimulai dengan setidaknya satu lebih 7dari itu pada iterasi sebelumnya).
1\n12\n123tidak valid?