Skip to content

Compresor/Decompresor de archivos mediante el Algoritmo de Huffman y Gestor de versiones mediante programación dinámica.

Notifications You must be signed in to change notification settings

dedetheprogrammer/ab21-22

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 

Repository files navigation

ALGORITMIA BASICA (2021-22)

1ª Parte. Huffman: un [de]compresor de archivos mediante el algoritmo de Huffman.

Un compresor y decompresor de archivos que aplica el algoritmo de Huffman para llevar a cabo el mismo.

  • Compilacion:

    g++ -std=c++11 main.cpp -o huf
  • Comandos disponibles y utilización:

    ./huf [options]
    
    Options: 
        -c <file>       Comprime el fichero dado.
        -d <file>.huf   Descomprime el fichero dado, si se pierde el .huf, no será posible recuperar su contenido original.
        help            Muestra este mismo mensaje.
  • Ficheros:

    • main.cpp: contiene el programa principal.
    • huffman_compressor.hpp: contiene la implementación de los algoritmos de compresion y decomprension y la implementación del algoritmo de Huffman.
    • huffman_heap.hpp: monticulo de Huffman personalizado para simplificar las operaciones.
    • huffman_exceptions.hpp: fichero de excepciones, para usuarios que hacen lo que no deberían hacer...

2ª Parte. Version: un almacen y gestor de versiones de fichero.

Un gestor de versiones de ficheros portable basado en el algoritmo de comparación de secuencias en el paradigma de la programación dinámica que permite el seguimiento de cualquier fichero y gestionar sus diferentes versiones que se vayan guardando o actualizando, que a diferencia de Git/Github no se requiere de inicializar un repositorio para su seguimiento, sino que ahora es posible seguir cualquier fichero de manera independiente sea el path que sea sin necesidad de crear una agrupación, repositorio, etc. y además permitirá navegar entre las diferentes versiones restaurandolas, sean versiones anteriores o versiones posteriores. También permite nombrar las versiones e incluso introducir una breve descripción de la misma.

  • Compilacion:

    g++ -std=c++11 main.cpp -o version
  • Para poder utilizar version y todas las ventajas que ofrece, uno debe recordar inicializarlo antes de poder usarlo. Esta opción creará la carpeta con los archivos necesarios para que version pueda funcionar correctamente.

    ./version init
  • Comandos disponibles y utilización:

    version [options]
    
    Options:
        add <file>                      Añade el fichero al registro.
        erase                           Elimina la carpeta de version.
        help                            Muestra ayuda.
        init                            Inicializa version y crea la carpeta de registro.
        log [<file>]                    Muestra los ficheros registrados o informacion sobre un fichero en especifico.
        remove <file>                   Quita el fichero del registro.
        restore <file> --version <n>    Restaura la version n del fichero, sea posterior o anterior.
        see <file>                      Muestra el contenido del fichero que tiene guardado version.
        update <file>                   Actualiza el contenido del fichero. Si la version actual es inferior a la ultima, 
                                        se perderan todas las versiones posteriores a la actual.
  • Ficheros:

    • main.cpp: contiene el código principal.
    • version_storage.hpp: contiene la implementación interna de las funciones de version.
    • version_exceptions.hpp: fichero de excepciones, para usuarios que hacen lo que no deberían hacer...
    • sequence_comparator.hpp: contiene la implementación interna del algoritmo en el que se basa el programa, un comparador de secuencias implementado con programación dinámica.
    • utils.hpp: funciones de uso general.
  • Restricciones:

    • No es recomendable ir modificando los ficheros internos de version por uno mismo, puede conllevar a comportamientos indefinidos del programa, siempre que se quiera modificar algo, modificarlo a través de version.

    • El comportamiento del programa con ficheros de texto con carácteres no ASCII (acentos, letras de diferentes alfabetos, etc) es impredecible.
    • El comportamiento con lineas mayores a 250 caracteres es un poco impredecible, no ha podido ser testeado del todo.

About

Compresor/Decompresor de archivos mediante el Algoritmo de Huffman y Gestor de versiones mediante programación dinámica.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published