Te pedimos que haga un programa que sea capaz de codificar y decodificar un texto (secuencia de palabras) con la siguiente codificación: cada vez que aparece una palabra nueva en el texto, la insertamos en un diccionario y le damos un nuevo identificador (el número de palabras que había en el diccionario antes de insertarla) pero la palabra se queda igual en el texto; cada vez que aparece una palabra ya vista, la palabra se reemplaza por su identificador (y el diccionario se queda igual).
La primera línea contiene la palabra ORIGINAL o
CODIFICADO, según si recibes un texto a codificar o un
texto a decodificar. El texto consiste únicamente en palabras no vacías
con letras minúsculas. A continuación, un número arbitrario de líneas
(pero no superior a 10000) cada una de ellas con entre 1 y 10 palabras
separadas por un espacio.
Escribe CODIFICADO o ORIGINAL según si
codificas o decodificas el texto, seguido del texto codificado o
decodificado, siguiendo el mismo formato que la entrada.
TestA:
Codificar entradas con no más de 100 líneas, todas ellas con una única palabra, como el Ejemplo 1.
TestB:
Decodificar entradas con no más de 100 líneas, todas ellas con una única palabra, como el Ejemplo 2.
TestC: Codificar entradas con no más de 5000 palabras.
TestD: Decodificar entradas con no más de 5000 palabras.
TestE: Codificar entradas con no más de 100000 palabras.
TestF: Decodificar entradas con no más de 100000 palabras.
Input
ORIGINAL la parte contratante de la primera parte sera considerada como la parte contratante de la primera parte
Output
CODIFICADO la parte contratante de 0 primera 1 sera considerada como 0 1 2 3 0 4 1
Input
CODIFICADO la parte contratante de 0 primera 1 sera considerada como 0 1 2 3 0 4 1
Output
ORIGINAL la parte contratante de la primera parte sera considerada como la parte contratante de la primera parte
Input
ORIGINAL la parte contratante de la primera parte sera considerada como la parte contratante de la primera parte
Output
CODIFICADO la parte contratante de 0 primera 1 sera considerada como 0 1 2 3 0 4 1
Input
CODIFICADO la parte contratante de 0 primera 1 sera considerada como 0 1 2 3 0 4 1
Output
ORIGINAL la parte contratante de la primera parte sera considerada como la parte contratante de la primera parte