Tulis program yang menyandikan teks yang diberikan ke teksnya sendiri, disediakan sebagai input, tanpa mengganggu logikanya. Program juga harus berfungsi sebagai dekoder, memulihkan pesan asli dari teksnya. Itu harus mempertahankan fungsi encoding / decoding setelah transformasi.
Secara lebih formal, program yang diperlukan P harus melakukan transformasi berikut dengan teks pesan yang diberikan M:
P (M, P) -> P *
P * (P *) -> M
Di sini P * adalah program yang diubah, yang juga harus memenuhi aturan di atas, yaitu:
P * (M2, P *) -> P **
P ** (P **) -> M2
dan seterusnya ... Setiap penyandian selanjutnya tidak menghapus teks yang disandikan sebelumnya, jadi P ** membawa dua pesan - M dan M2.
Cara termudah untuk membedakan program antara mode encoding / decoding adalah dengan adanya argumen tambahan M, tetapi keputusan akhir terserah Anda, asalkan dinyatakan dengan jelas. Program dapat membaca teksnya sendiri dari file. Jika bahasa yang dipilih tidak memiliki sarana untuk ini, teks sumber dapat diteruskan ke program dengan cara lain.
Ada solusi sepele, tentu saja, jadi ini bukan kontes popularitas. Meskipun demikian, saya memaksakan pembatasan untuk melarang komentar dalam teks program.