TwiddleLab / Код / Как компьютер хранит всё
Сжимаем без потерь
Что ты узнаешь
- Сжатие записывает ту же информацию меньшим числом символов.
- Кодирование длин серий: серия одного цвета становится числом и цветом, например 5W.
- Без потерь: распаковка возвращает ровно оригинал.
- Повторы хорошо сжимаются. Шум и уже сжатые данные нет.
Как идёт урок
Папка на 10 МБ сжимается в 2 МБ и распаковывается в точно такие же файлы. Куда делись 8 МБ?
Начни с малого: одна строка из 20 пикселей.
Запиши каждую серию как число и цвет.
Нажми на серию одного цвета. Потом сделай то же ещё с двумя строками.
Работает ли трюк на любой картинке?
Сожми обе строки, потом нажми на ту, что стала короче.
Сжатие без потерь.
Сжатие: та же информация меньшим числом символов или байт.
Кодирование длин серий (RLE): каждая серия одного значения становится числом и значением. 7W6K3R4W.
Без потерь: распаковка возвращает ровно оригинал, бит в бит. ZIP и PNG сжимают без потерь; они используют трюки хитрее RLE, например замечают повторяющиеся слова.
Побудь распаковщиком: раскрась строку по её коду.
3R2G4R1B значит 3 красных (R), 2 зелёных (G), 4 красных, 1 синий (B).
Гольф сжатия: нарисуй свою иконку 8 x 8 не длиннее нормы.
Код каждой строки считается на ходу справа. Меньше смен цвета, короче код. Норма 40 символов.
Какие файлы сожмёт кодирование длин серий?
Подумай: есть ли в нём длинные серии одного значения?
Отправь только код. Сможет ли другая сторона восстановить иконку?
Распаковщик читает код твоей иконки, фишку за фишкой.
В этих кодах опечатка. Исправь их.
Нажми на неверную фишку, потом меняй её число, пока строки не совпадут.
Теперь добавь на иконку шум камеры.
Усиливай шум и следи за длиной кода.
Предыдущий урок: Звук это список чисел · Следующий урок: Выбрось то, чего не заметишь · Часть курса: Как компьютер хранит всё
Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.