Escreva um programa que codifique o texto fornecido em seu próprio texto, fornecido como entrada, sem interromper sua lógica. O programa também deve funcionar como um decodificador, restaurando a mensagem original do seu texto. Ele deve manter suas funções de codificação / decodificação após a transformação.
Mais formalmente, o programa requerido P deve executar as seguintes transformações com o texto de mensagem M:
P (M, P) -> P *
P * (P *) -> M
Aqui, P * é o programa transformado, que também deve satisfazer as regras acima, ou seja:
P * (M2, P *) -> P **
P ** (P **) -> M2
e assim por diante ... a codificação subsequente não apaga o texto codificado anteriormente; portanto, P ** carrega duas mensagens - M e M2.
A maneira mais fácil para o programa distinguir entre os modos de codificação / decodificação é pela presença do argumento extra M, mas a decisão final é com você, desde que claramente indicado. O programa pode ler o próprio texto do arquivo. Se o idioma escolhido não tiver meios para isso, o texto fonte pode ser passado para o programa de qualquer outra maneira.
Existem soluções triviais, é claro, então esse é um concurso de popularidade. No entanto, imponho restrições que proíbem comentários no texto do programa.