Un índice de un texto es una lista de todas las palabras que aparecen en él, junto con las posiciones donde se encuentran. Por ejemplo, dado el texto:
the cat sat on the mat the cat
el índice sería:
cat: 2 8
mat: 6
on: 4
sat: 3
the: 1 5 7
Fijaos en que las palabras del índice están ordenadas alfabéticamente, y las posiciones de cada palabra también están ordenadas.
Haced un programa que lea una secuencia de palabras y muestre el índice.
En este problema el centro de interés es la eficiencia. Hay que encontrar una forma inteligente de almacenar las palabras y sus posiciones para evitar búsquedas innecesarias.
La entrada es una secuencia de palabras (en minúsculas, sin espacios internos), una por línea, acabada por fin de entrada. La primera palabra tiene la posición 1.
Para cada palabra diferente que aparece en el texto, se escribe una
línea con la palabra, seguida de : y un espacio, y a
continuación las posiciones donde aparece, ordenadas de menor a mayor y
separadas por espacios. Las palabras se escriben en orden
alfabético.
Input
to be or not to be that is the question whether tis nobler in the mind to suffer the slings and arrows of outrageous fortune or to resist
Output
and: 21 arrows: 22 be: 2 6 fortune: 25 in: 14 is: 8 mind: 16 nobler: 13 not: 4 of: 23 or: 3 26 outrageous: 24 question: 10 resist: 28 slings: 20 suffer: 18 that: 7 the: 9 15 19 tis: 12 to: 1 5 17 27 whether: 11
Input
el gat va seure sobre el gat i el gat va saltar
Output
el: 1 6 9 gat: 2 7 10 i: 8 saltar: 12 seure: 4 sobre: 5 va: 3 11