Viết chương trình mã hóa văn bản đã cho thành văn bản của chính nó, được cung cấp làm đầu vào, mà không làm gián đoạn logic của nó. Chương trình cũng phải hoạt động như một bộ giải mã, khôi phục thông điệp gốc từ văn bản của nó. Nó phải giữ lại các chức năng mã hóa / giải mã sau khi chuyển đổi.
Nói một cách chính thức hơn, chương trình bắt buộc P phải thực hiện các phép biến đổi sau với văn bản thông báo đã cho M:
P (M, P) -> P *
P * (P *) -> M
Ở đây P * là chương trình được chuyển đổi, cũng phải đáp ứng các quy tắc trên, đó là:
P * (M2, P *) -> P **
P ** (P **) -> M2
, v.v ... Mỗi mã hóa tiếp theo không xóa văn bản được mã hóa trước đó, vì vậy P ** mang hai thông điệp - M và M2.
Cách dễ nhất để chương trình phân biệt giữa các chế độ mã hóa / giải mã là sự hiện diện của đối số phụ M, nhưng quyết định cuối cùng là tùy thuộc vào bạn, miễn là nó được nêu rõ. Chương trình có thể đọc văn bản của chính nó từ tệp. Nếu ngôn ngữ được chọn không có nghĩa cho việc này, văn bản nguồn có thể được chuyển đến chương trình theo bất kỳ cách nào khác.
Có những giải pháp tầm thường, tất nhiên, vì vậy đây là một cuộc thi phổ biến. Tuy nhiên, tôi áp đặt các hạn chế cấm bình luận trong văn bản chương trình.