diff --git a/sk1/README.md b/sk1/README.md new file mode 100644 index 0000000..539c9dd --- /dev/null +++ b/sk1/README.md @@ -0,0 +1,55 @@ +# Zadanie + +Naprogramuj nástroj na kompresiu a dekompresiu. Na kompresiu použite jeden alebo viac kompresných algoritmov: Huffmanovo kódovanie, LZ77, LZ78, Run Length kódovanie alebo iný. +Meno vstupného a výstupného súboru načítajte ako argument príkazového riadka. V zadaní by mali byť implementované tieto dve funkcie: + +```C +/** + * Skomprimuje súbor in a zapíše do súboru out. + * @arg in smerník na otvorený vstupný súbor (na čítanie) + * @arg out smerník na otvorený výstupný súbor (na zápis) + * @return počet bajtov skomprimovaného súboru + */ +int compress(FILE* in, FILE* out); +/** + * Dekomprimuje súbor in a zapíše do súboru out. + * @arg in smerník na otvorený vstupný súbor (na čítanie) + * @arg out smerník na otvorený výstupný súbor (na zápis) + * @return počet bajtov dekomprimovaného súboru + */ +void decompress(FILE* in, FILE* out); +``` + +Kompresor a dekompresor by mal byť schopný pracovať s ľubovoľným binárnym súborom do 10 MB. Súbor by mal byť po skomprimovaní menší minimálne o 10 percent a po dekomprimovaní by mal byť zhodný s pôvodným súborom. Pri práci s binárnymi súbormi môžete využiť funkcie fopen(), fread() a fwrite(). + +Na otestovanie kompresora a dekompresora použite súbory z Cantebury corpus. + +# Stručný opis funkčnosti + +Musíme vytvoriť program, ktorý dokáže komprimovať a dekomprimovať súbory bez straty akýchkoľvek údajov + +# Stručný opis riešenia + +Program používa na kompresiu súborov algoritmus stratovej kompresie dát LZ78. Kombinácie písmen kombinácie a index tejto kombinácie dynamicky uloží do stromu a potom zapíše iba index do súboru. + +# Podmienky za ktorých funguje + +Program dokáže skutočne komprimovať súbory s dobrým opakovaním podobných bajtových sekvencií. Funguje zle s malými súbormi a so súbormi s veľmi rozdielnymi bajtovými sekvenciami + +# Návod na použitie + +- Skompilujte program + +```bash +make all +``` + +- spustiť program + +```bash +./program c vstupný súbor vystupný súbor +./program d vstupný súbor vystupný súbor +``` + +použite c na zakódovanie súboru +použite d na dekódovanie súboru