Hacer un proyecto de python sobre compresión y descompresión de archivos de texto con LZ77
€8-30 EUR
Cerrado
Publicado hace alrededor de 1 año
€8-30 EUR
Pagado a la entrega
Proyecto: Algoritmo LZ77 con longitud fija
1. Dada una cadena de caracteres, una posición correcta k en dicha cadena, y dos longitudes de buffers M y N, programar una función buffers que devuelva los búferes de búsqueda y codificación correspondientes a dicha posición, y compruébese con cuidado los casos extremos, al comienzo o al final de la cadena. Definir M y N como constantes globales ambas de 248.
2. Fijados un búfer de búsqueda y un búfer de codificación, ambos de caracteres
ASCII, programar una función triple que a partir de dos strings con ambos
búferes devuelva el triple (offset, long, char) del algoritmo LZ77. Prevéanse las
posibles situaciones límite (búferes vacíos, long máxima, etc.) y compruébese
que el resultado es siempre correcto. Decidir de manera opcional si se pueden
solapar ambos búferes o no (se valorará más el primer caso).
3. Programar una función complete en la que, dada una cadena “descodificada” y
un triple, complete la cadena de acuerdo con la información del triple.
4. Entregar el código de Python con las tres funciones.
5. Programar una función llamada text2triples que lea una cadena de caracteres y devuelva una lista de triples con el algoritmo LZ77, haciendo un bucle que recorra la cadena de principio a fin, actualizando la posición del algoritmo en dicha cadena.
6. Programar una función llamada triples2text que a partir de una lista de triples
reconstruya la cadena de texto correspondiente.
7. Programar una función triples2bits que lea una lista de triples, y a partir de ella
genere un bitarray, le añada un 1, lo complete con 0’s hasta que la longitud del
bitarray sea múltiplo de 8 (padding). La función debe devolver el bitarray
generado.
8. Programar una función bits2triples que lea un bitarray, elimine el padding (el 1
seguido de ceros del final), vaya leyendo los bits y reconstruya la lista de triples
que ha generado el bitarray.
9. A partir de las funciones de las entregas anteriores, programar una función
llamada compress que lea un archivo de texto, comprima el archivo y guarde el
resultado (bitarray) en un archivo binario. Los parámetros de la función serán las
rutas del archivo de texto y del archivo binario comprimido, y la función
devolverá el número de bytes del archivo comprimido.
10. De la misma manera, programar una función llamada decompress que lea un
archivo binario comprimido con la función anterior, lo vuelque en un bitarray, lo
descomprima en una cadena de texto, y guarde el resultado en un archivo ASCII. Los parámetros de la función serán las rutas del archivo binario y del archivo de texto descomprimido, y la función devolverá el número de caracteres del archivo descomprimido.
Poner todo en un programa completo, con las 9 funciones y el programa principal (main). Este programa main tendrá un menú con dos opciones: (1) comprimir un archivo de texto, y (2) descomprimir un
archivo binario.
Hola, mi nombre es Carlos David Nimo y son ingeniero en telecomunicaciones y electrónica, tengo una maestría en protocolos de comunicación y creo tener las habilidades y el conocimiento para poder llevar a cabo tu proyecto. Si pudiera escribirme para ultimar detalles del algoritmo de encriptación se lo agradecería. Saludos
Creo que soy un buen candidato para ayudarte por que me manejo con Python a diario ya que lo estoy estudiando y lo manejo bastante bien. Además hablamos los dos español que nos va a facilitar mucho la comunicación.