Napisz program, który koduje dany tekst we własnym tekście, podanym jako dane wejściowe, bez zakłócania jego logiki. Program musi również działać jako dekoder, przywracając oryginalną wiadomość z jej tekstu. Po transformacji musi zachować swoje funkcje kodowania / dekodowania.
Mówiąc bardziej formalnie, wymagany program P musi wykonać następujące przekształcenia z podanym tekstem komunikatu M:
P (M, P) -> P *
P * (P *) -> M
Tutaj P * jest przekształconym programem, który również musi spełniać powyższe reguły, to znaczy:
P * (M2, P *) -> P **
P ** (P **) -> M2
i tak dalej ... Każdy kolejne kodowanie nie usuwa wcześniej zakodowanego tekstu, więc P ** przenosi dwie wiadomości - M i M2.
Najłatwiejszym sposobem na rozróżnienie między trybami kodowania / dekodowania jest obecność dodatkowego argumentu M, ale ostateczna decyzja należy do Ciebie, pod warunkiem, że jest to wyraźnie określone. Program może odczytać własny tekst z pliku. Jeśli wybrany język nie ma na to środków, tekst źródłowy można przekazać do programu w jakikolwiek inny sposób.
Istnieją oczywiście trywialne rozwiązania, więc jest to raczej konkurs popularności. Niemniej jednak nakładam ograniczenie zabraniające komentowania w tekście programu.