Задание №4. Кодирование Хаффмана
Реализовать обычное кодирование Хаффмана для последовательности целых чисел. Программа представляет собой консольное приложение. Для кодирования использовать опцию -encode
, для декодирования -decode
. Программа принимает аргументами два файла — входной и выходной, например:
huffman -encode input.txt output.txt
или
huffman -decode input.txt output.txt
При кодировании входной файл содержит последовательность целых чисел (т.е. могут быть отрицательные) через пробел на одной строке (символа конца строки нет). Формат закодированного файла выбирается самостоятельно. При декодировании роли файлов меняются местами. Очевидно, декодированный файл обязан совпадать с исходным.
При кодировании на экран должна выводиться следующая информация:
- Длина входной последовательности
- Энтропия входной последовательности (в битах)
- Размер по энтропии — произведение длины последовательности на ее энтропию (в байтах)
- Полный размер выходного файла (в байтах)
- Процент потерь — насколько размер выходного файла больше, чем размер по энтропии (в процентах)