Codificación con diccionario P91396


Statement
 

pdf   zip

html

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).

Entrada

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.

Salida

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.

Puntuación

  • TestA:  20 Puntos 

    Codificar entradas con no más de 100 líneas, todas ellas con una única palabra, como el Ejemplo 1.

  • TestB:  20 Puntos 

    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.  15 Puntos 
  • TestD:   Decodificar entradas con no más de 5000 palabras.  15 Puntos 
  • TestE:   Codificar entradas con no más de 100000 palabras.  15 Puntos 
  • TestF:   Decodificar entradas con no más de 100000 palabras.  15 Puntos 
Public test cases
  • 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
    
  • Information
    Author
    Omer Giménez
    Language
    Spanish
    Official solutions
    C++
    User solutions
    C++ Python