Необходимо реализовать два известных метода сжатия данных для сжатия одного файла. Методы сжатия выбираются из следующих групп:
- Арифметическое кодирование, кодирование по Хаффману
- LZ77, LZW, BWT+MTF+RLE
Формат запуска должен быть аналогичен формату запуска программы gzip. Должны быть поддерживаться следующие ключи:
-c
, -d
, -k
, -l
, -r
, -t
, -1
, -9
. Должно поддерживаться указание символа дефиса в качестве
стандартного ввода.
-c
-- вывод данных в std::out.
-d
-- разархивация.
-k
-- не удалять исходный файл в процессе архивации или разархивации.
-l
-- для сжатого файла показать характеристики:
-
Заархивированный размер -- размер закодированного файла.
-
Разархивированный размер -- размер незакодированного файла.
-
Коэфицент сжатия -- расчитывается в процентах (0.0% если неизвестно)
-
Имя исходного файла
-r
-- рекурсивный обход дериктории. Если один из файлов в командной строке является деррикторией,
архиватор заархивирует все файлы в этой дериктории.
-t
-- проверка закодированного файла на целостность.
-1
... -9
-- определение блока памяти.
-9
будет означать использование всей ОЗУ.