Напишіть програму, кодує заданий текст у свій власний текст, поданий як введення, не порушуючи його логіки. Програма також повинна працювати як декодер, відновлюючи початкове повідомлення з його тексту. Він повинен зберігати свої функції кодування / декодування після перетворення.
Більш формально кажучи, потрібна програма P повинна виконати наступні перетворення із заданим текстом повідомлення M:
P (M, P) -> P *
P * (P *) -> M
Тут P * - це перетворена програма, яка також повинна відповідати вищевказаним правилам, тобто:
P * (M2, P *) -> P **
P ** (P **) -> M2
і так далі ... Кожна наступне кодування не стирає раніше кодований текст, тому P ** несе два повідомлення - M і M2.
Найпростіший спосіб розрізнити програми кодування / декодування - це наявність додаткового аргументу M, але остаточне рішення залежить від вас, якщо це чітко зазначено. Програма може прочитати власний текст із файлу. Якщо обрана мова не має засобів для цього, вихідний текст може бути переданий програмі будь-яким іншим способом.
Звичайно, є тривіальні рішення, тож це доволі популярний конкурс. Тим не менш, я накладаю обмеження щодо заборони коментарів у тексті програми.