Задания для самостоятельного выполнения

Сложность:
Rare
  • Реализуйте на любом языке программирования программу-архиватор, выполняющую упаковку и распаковку файла. Программа должна отображать степень сжатия:

$$ SSR = \left( 1 - \frac{S_{comp}}{S_{src}} \right) \cdot 100 \%, $$ где \(S_{comp}\) - размер сжатого файла, \(S_{src}\) - размер исходного файла.

  • Исходный и распакованный файл сравнить с помощью diff.

Сложность:
Medium
  • Степень сжатия \(SSR\) должна быть положительной.

Сложность:
Well-done
  • Принимается только:
    • Самый быстрый алгоритм сжатия в своём классе
    • Cамый эффективный алгоритм сжатия в своём классе
  • Алгоритмы тестировать на файле из 10000 уникальных строк по 32 символа из всех доступных символов, сгенерированном на random.org

Варианты заданий

  1. LZ77. Война и мир.

  2. BWT+RLE. Геном домашней кошки.

  3. Huffman. Произвольная книга из симулятора Вавилонской библиотеки.

  4. Vitter. PPM файл. Формат PPM.

  5. BWT+LZ77. ASCII STL файл. Формат STL.

  6. MTF+RLE. Веб-страница. Пример страницы.

  7. BWT+Huffman. Большой файл из SecLists (\(\ge\) 100 Мб).

  8. BWT+Vitter. Блоки /dev/random. Файл (\(\ge\) 100 Мб).

  9. MTF+LZ77. Самый большой файл из репозитория ядра Linux.

  10. BWT+MTF+RLE. Словарь Ожегова.

  11. MTF+Huffman. Любой файл \(\ge\) 100 Мб из COMB. Пароль +w/P3PRqQQoJ6g.

  12. MTF+Vitter. /var/log/Xorg.0.log.