https://github.com/dedetheprogrammer/ab21-22
Compresor/Decompresor de archivos mediante el Algoritmo de Huffman y Gestor de versiones mediante programación dinámica.
https://github.com/dedetheprogrammer/ab21-22
compressor cplusplus-11 decompressor huffman version-control
Last synced: 2 months ago
JSON representation
Compresor/Decompresor de archivos mediante el Algoritmo de Huffman y Gestor de versiones mediante programación dinámica.
- Host: GitHub
- URL: https://github.com/dedetheprogrammer/ab21-22
- Owner: dedetheprogrammer
- Created: 2022-02-23T22:31:01.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2022-09-20T18:21:55.000Z (over 2 years ago)
- Last Synced: 2025-01-20T17:17:20.590Z (4 months ago)
- Topics: compressor, cplusplus-11, decompressor, huffman, version-control
- Language: C++
- Homepage:
- Size: 15.4 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ALGORITMIA BASICA (2021-22)
## [1ª Parte](https://github.com/ddevigner/ab21-22/tree/main/HuffmanCompression). 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:
```bash
g++ -std=c++11 main.cpp -o huf
```
- Comandos disponibles y utilización:
```bash
./huf [options]
Options:
-c Comprime el fichero dado.
-d .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](https://github.com/ddevigner/ab21-22/blob/main/HuffmanCompression/main.cpp): contiene el programa principal.
- [huffman_compressor.hpp](https://github.com/ddevigner/ab21-22/blob/main/HuffmanCompression/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](https://github.com/ddevigner/ab21-22/blob/main/HuffmanCompression/huffman_heap.hpp): monticulo de Huffman personalizado para simplificar las operaciones.
- [huffman_exceptions.hpp](https://github.com/ddevigner/ab21-22/blob/main/HuffmanCompression/huffman_exceptions.hpp): fichero de excepciones, para usuarios que hacen lo que no deberían hacer...## [2ª Parte](https://github.com/ddevigner/ab21-22/tree/main/VersionStorage). 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:
```bash
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.
```bash
./version init
```- Comandos disponibles y utilización:
```bash
version [options]
Options:
add 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 [] Muestra los ficheros registrados o informacion sobre un fichero en especifico.
remove Quita el fichero del registro.
restore --version Restaura la version n del fichero, sea posterior o anterior.
see Muestra el contenido del fichero que tiene guardado version.
update 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](https://github.com/ddevigner/ab21-22/blob/main/Version/main.cpp): contiene el código principal.
- [version_storage.hpp](https://github.com/ddevigner/ab21-22/blob/main/Version/version_storage.hpp): contiene la implementación interna de las funciones de **_version_**.
- [version_exceptions.hpp](https://github.com/ddevigner/ab21-22/blob/main/Version/version_exceptions.hpp): fichero de excepciones, para usuarios que hacen lo que no deberían hacer...
- [sequence_comparator.hpp](https://github.com/ddevigner/ab21-22/blob/main/Version/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](https://github.com/ddevigner/ab21-22/blob/main/Version/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.