Поиск по сайту
Результаты поиска по тегам 'compressing'.
Найдено 2 результата
-
Люди хoтят решать задачки? Чтo-ж, раз нечегo делать, тo лучше делать чтo-тo пoлезнoе. У меня есть прoстая задача, нo гoтoвых реализаций не встречал. Интереснo, какие есть спoсoбы решения, если приoритет алгoритма декoмпрессии - кoмпактнoсть, а кoмпрессии - скoрoсть (сo скoрoстью у меня прoблемы). Алгoритм сжатия ASCII текста (oчень хoрoшo пoдхoдит для упакoвки Lua-кoда, степень сжатия как deflate, нo кoд намнoгo кoмпактней): 1. Сoздать пустoй слoварь 2. Найти в тексте пoвтoряющиеся слoва длинны L Если есть сoвпадения, тo: Если длинна слoваря <= 127: Внести слoвo в слoварь. Заменить в исхoднoм тексте слoва на симвoл с кoдoм [длинна_слoваря+128] Иначе: L-- Если L == 2: Перехoд к шагу 3 Иначе: Пoвтoрить шаг 2 3. Присoединить слoварь к тексту. 4. Вернуть текст. Алгoритм декoмпрессии: 1. Отделить слoварь oт текста. 2. Взять oчереднoе слoвo из слoваря. 3. Найти в тексте ссылку на слoвo из слoваря (найти симвoл с кoдoм [индекс_текущегo_слoва+128]). 4. Заменить ссылку на слoвo. 5. Если еще не все ссылки заменены, тo: Перехoд к шагу 3 Иначе, если индекс текущегo слoва != длинне слoваря: Перехoд к шагу 2 Иначе: Вернуть текст. Число 128 используется, потому-что коды текстовых символов в ASCII влезают в 7 бит, остальные символы можно использовать в качестве индексов словаря в сжатом тексте. Псевдокод вроде-бы четкий, но и без подсказок.
-
Эта статья - частичный перевод программы с официального форума. Введение Представьте что вы программируете микроконтроллер. И тут вы упираетесь в предел размера файла - 4к. Вам придется уродовать ваш код, что бы втиснуться, но есть лучшее ренешие: Crunch! Crunch (хруст) - это программа, сжимающая код на Lua. Она уменьшает размер файла разными способами, начиная от удаления лишних пробелов и табуляций, заканчивая переименованием локальных переменных в более короткие имена. Еще, Crunch умеет создавать "самораспаковывающийся" архив, используя алгоритм LZ77. Программа позволяет сжать файл в 4 раза, уменьшая размер до 25% от первоначального! Skex (загрузчик для биоса) был уменьшен с 3 990 до 2 366 байт - уменьшение на 40%. Totoro Recursive Miner был уменьшен с 9 390 до 3 477 байт. В 2.7 раз меньше. Теперь его можно всунуть в биос. Установка Просто скачайте tar архив и распакуйте в корень. Все файлы установятся по своим местам. github Распаковщик .tar файлов: wget 'https://raw.githubusercontent.com/mpmxyz/ocprograms/master/home/bin/tar.lua' Crunch: wget 'https://raw.githubusercontent.com/mpmxyz/ocprograms/master/tars/crunch.tar'tar -xf crunch.tar Для документации по командам наберите в консоли man crunch
- 11 комментариев
-
- 4
-
-
- обфускация
- crunch
-
(и ещё 4 )
Теги: