Escriba un programa que codifique el texto dado en su propio texto, proporcionado como entrada, sin interrumpir su lógica. El programa también debe funcionar como decodificador, restaurando el mensaje original de su texto. Debe conservar sus funciones de codificación / decodificación después de la transformación.
Hablando más formalmente, el programa requerido P debe realizar las siguientes transformaciones con el mensaje de texto M:
P (M, P) -> P *
P * (P *) -> M
Aquí P * es el programa transformado, que también debe satisfacer las reglas anteriores, es decir:
P * (M2, P *) -> P **
P ** (P **) -> M2
y así sucesivamente ... Cada la codificación posterior no borra el texto codificado previamente, por lo que P ** lleva dos mensajes: M y M2.
La forma más fácil para que el programa distinga entre los modos de codificación / decodificación es mediante la presencia del argumento adicional M, pero la decisión final depende de usted, siempre y cuando se establezca claramente. El programa puede leer su propio texto del archivo. Si el idioma elegido no tiene medios para esto, el texto fuente se puede pasar al programa de cualquier otra manera.
Existen soluciones triviales, por supuesto, por lo que este es un concurso de popularidad. Sin embargo, impongo restricciones que prohíben los comentarios en el texto del programa.