КурсыИИМатематикаКодФизикаО проекте и вопросы

TwiddleLab / Код / Как компьютер хранит всё

Сжимаем без потерь

Урок 6 из 11 · 7 мин · Бесплатно, без аккаунта

Что ты узнаешь

  • Сжатие записывает ту же информацию меньшим числом символов.
  • Кодирование длин серий: серия одного цвета становится числом и цветом, например 5W.
  • Без потерь: распаковка возвращает ровно оригинал.
  • Повторы хорошо сжимаются. Шум и уже сжатые данные нет.

Начать урок

Как идёт урок

  1. Папка на 10 МБ сжимается в 2 МБ и распаковывается в точно такие же файлы. Куда делись 8 МБ?

    Начни с малого: одна строка из 20 пикселей.

  2. Запиши каждую серию как число и цвет.

    Нажми на серию одного цвета. Потом сделай то же ещё с двумя строками.

  3. Работает ли трюк на любой картинке?

    Сожми обе строки, потом нажми на ту, что стала короче.

  4. Сжатие без потерь.

    Сжатие: та же информация меньшим числом символов или байт.

    Кодирование длин серий (RLE): каждая серия одного значения становится числом и значением. 7W6K3R4W.

    Без потерь: распаковка возвращает ровно оригинал, бит в бит. ZIP и PNG сжимают без потерь; они используют трюки хитрее RLE, например замечают повторяющиеся слова.

  5. Побудь распаковщиком: раскрась строку по её коду.

    3R2G4R1B значит 3 красных (R), 2 зелёных (G), 4 красных, 1 синий (B).

  6. Гольф сжатия: нарисуй свою иконку 8 x 8 не длиннее нормы.

    Код каждой строки считается на ходу справа. Меньше смен цвета, короче код. Норма 40 символов.

  7. Какие файлы сожмёт кодирование длин серий?

    Подумай: есть ли в нём длинные серии одного значения?

  8. Отправь только код. Сможет ли другая сторона восстановить иконку?

    Распаковщик читает код твоей иконки, фишку за фишкой.

  9. В этих кодах опечатка. Исправь их.

    Нажми на неверную фишку, потом меняй её число, пока строки не совпадут.

  10. Теперь добавь на иконку шум камеры.

    Усиливай шум и следи за длиной кода.

Предыдущий урок: Звук это список чисел · Следующий урок: Выбрось то, чего не заметишь · Часть курса: Как компьютер хранит всё

Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.

Loading TwiddleLab