Nos contactó la Fiscalia General de la nación, estan enloquecidos con la cantidad de documentos e información física que tienen en sus archivadores, no estan conformes con digitalizarla o escanearla ya que esto significaría demasiadas gigas de almacenamiento y no sería optimo, por lo tanto quieren que solucionemos este problema en el menor tiempo posible con un algoritmo de compresión.
## ¿Como lo haremos?
Debemos crear un algoritmo que nos permita comprimir la información de todos los procesos penales que allí se llevan a cabo, para eso debemos implementar la siguiente funcionalidad:
Si tenemos el siguiente texto:
"This specification is the specification for a specification"
Lo que haremos es comprimirlo generando dos arreglos. El primero contendrá todas las palabras encontradas en el texto sin repetirlas, como se ve a continuación:
[ "This", "specification", "is", "the", "for", "a"]
El segundo contendrá indices enteros en donde cada uno de estos hará referencia a la posición de la palabra en nuestro arreglo anterior según estas aparezcan en el documento, para este caso tenemos:
[ 0, 1, 2, 3, 1, 4, 5, 1 ]
Con estas dos secuencias sera posible reproducir el contenido original de cada documento recorriendo el arreglo de indices según corresponda a cada palabra en nuestro primer arreglo, por ejemplo:
0 - This
1 - Specification
2 - is
3 - the
1 - specification
4 - for
5 - a
1 - specification
De lo anterior:
"This specification is the specification for a specification"
Vamos con toda y recuerda que programación orientada a objetos es una excelente opción para resolver este tipo de problemas.