Блок задач

1. Базовые навыки

Темы
Сложность 5

Задача «RLE-сжатие файла»

Реализовать компрессор и декомпрессор произвольных файлов (и монохромных картинок тоже) на основе алгоритма 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.