Задание № 1688

Студент

Хорунженко Аркадий

Задача

RLE-сжатие файла

Состояние

Завершено

Баллов

5

Назначено

06.09.2019, 03:43

Завершено

18.11.2019, 11:44

Реализовать компрессор и декомпрессор произвольных файлов (и монохромных картинок тоже) на основе алгоритма RLE.

Режим работы и файлы задаются в командной строке.

  • python3 rle.py c infile outfile — сжатие infile, результат записывается в outfile.
  • python3 rle.py d infile outfile — распаковка infile, результат записывается в outfile.

Суть алгоритма

  1. Выбирается специальный байт (редко встречающийся в файле), который будет использоваться как префикс.
  2. Повторяющиеся цепочки одинаковых байтов будут заменяться на последовательность PF CC BB, где PF — байт-префикс, CC — количество байт, BB — само значение байта. Например, если выбран префикс FF, то последовательность 10 10 10 10 10 10 будет заменена на FF 06 10. Если в файле встретится байт FF, то он будет заменен на FF 01 FF.

Действия