Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Turbo Site Admin
Зарегистрирован: 19.02.2006 Сообщения: 248
|
Добавлено: Ср Апр 16, 2008 8:54 am Заголовок сообщения: Ваши решения для задачи "Автоархив" |
|
|
В этой теме можно обсудить ваш подход к решению этой задачи.
Применяли ли вы какие-то наработки из архиваторов или писали свое решение? |
|
Вернуться к началу |
|
|
Stanislav Markevich
Зарегистрирован: 21.02.2006 Сообщения: 12 Откуда: Москва
|
Добавлено: Ср Апр 16, 2008 12:11 pm Заголовок сообщения: |
|
|
Я использовал готовый исходник LPAQ (у него самый маленький исходник был из семейства PAQ). Пожатый бинарник превратил в строку алгоритмом base128. Итого с исходным текстом распаковщика ~38 кб. |
|
Вернуться к началу |
|
|
zhengxi
Зарегистрирован: 25.03.2008 Сообщения: 19
|
Добавлено: Ср Апр 16, 2008 12:21 pm Заголовок сообщения: |
|
|
Stanislav Markevich писал(а): | Я использовал готовый исходник LPAQ (у него самый маленький исходник был из семейства PAQ). Пожатый бинарник превратил в строку алгоритмом base128. Итого с исходным текстом распаковщика ~38 кб. |
+1
Но.
В gcc можно в строковой константе использовать любые байты.
То есть можно не писать \0, а реально поставить там байт 00
Два байта занимают только \n \" и \\
Остальное - as is
Получилось ~30k |
|
Вернуться к началу |
|
|
Stanislav Markevich
Зарегистрирован: 21.02.2006 Сообщения: 12 Откуда: Москва
|
Добавлено: Ср Апр 16, 2008 12:28 pm Заголовок сообщения: |
|
|
zhengxi писал(а): | Stanislav Markevich писал(а): | Я использовал готовый исходник LPAQ (у него самый маленький исходник был из семейства PAQ). Пожатый бинарник превратил в строку алгоритмом base128. Итого с исходным текстом распаковщика ~38 кб. |
+1
Но.
В gcc можно в строковой константе использовать любые байты.
То есть можно не писать \0, а реально поставить там байт 00
Два байта занимают только \n \" и \\
|
Пробовал так сделать, но домашний VC8.0 ругался на ошибки. А попробовать на gcc не догадася |
|
Вернуться к началу |
|
|
rand08
Зарегистрирован: 22.03.2008 Сообщения: 5
|
Добавлено: Ср Апр 16, 2008 12:50 pm Заголовок сообщения: |
|
|
Сначала накидал LZW, вышло ~50Кб.
Потом написал SR, стало ~42Кб. Теоретически можно было уменьшить результат ещё на 2-3Кб.
PS. А юзать готовые исходники lpaq неинтересно |
|
Вернуться к началу |
|
|
pperm
Зарегистрирован: 25.02.2007 Сообщения: 26
|
Добавлено: Ср Апр 16, 2008 2:08 pm Заголовок сообщения: |
|
|
я использовал преобразование BWT и сжимал повторения...
Дальше кодировал эту строку... т.е каждому символу выдовал число от 1, частота символа в последних нескольких просмотренных... И кодировал текущий символ из этих характеристим с момощью Хаффмана... получил 39035... использовал только 128 различных символов... т.е в итоге файл у меня получился размеров 41038 |
|
Вернуться к началу |
|
|
Werewolf
Зарегистрирован: 16.03.2007 Сообщения: 28
|
Добавлено: Ср Апр 16, 2008 3:55 pm Заголовок сообщения: |
|
|
Взял готовый paq1, почти полностью переписал его для оптимизации размера исходника, убрал некоторые модели и тд.
zhengxi, странно, вот именно 0 у меня компилятор на spoj не сжевал, из-за этого последовательности вида "\05" приходилось преобразовывать в "\0005", иначе компилятор думал, что это символ с кодом 5. Кроме \0 заменил \n, \r, \" и \\. Остальное компилятор нормально воспринял ) _________________ Þá skelfur askr Yggdrasils, ok engi hlutr er þá óttalaus á himni eða jörðu. |
|
Вернуться к началу |
|
|
petrovich
Зарегистрирован: 16.04.2008 Сообщения: 6 Откуда: Минск
|
Добавлено: Ср Апр 16, 2008 11:29 pm Заголовок сообщения: |
|
|
текст сжал Zip-ом, алгоритм deflate реализовал самостоятельно ранее. Больше всего времени ушло на замену идентификаторов и удаление пробелов в исходном тексте. Получилось чуть больше 40000. Как я понял, Zip --- не самое лучшее решение для сжатия текста. |
|
Вернуться к началу |
|
|
zhengxi
Зарегистрирован: 25.03.2008 Сообщения: 19
|
Добавлено: Вс Апр 20, 2008 4:39 pm Заголовок сообщения: |
|
|
Werewolf писал(а): |
zhengxi, странно, вот именно 0 у меня компилятор на spoj не сжевал, из-за этого последовательности вида "\05" приходилось преобразовывать в "\0005", иначе компилятор думал, что это символ с кодом 5. Кроме \0 заменил \n, \r, \" и \\. Остальное компилятор нормально воспринял ) |
\0 и \t прошли, заменялись: \n \r \" \\
Ты вставлял в форму или аплоадил файл ?
Может это браузер \0 портил при отправке ? |
|
Вернуться к началу |
|
|
Werewolf
Зарегистрирован: 16.03.2007 Сообщения: 28
|
Добавлено: Вс Апр 20, 2008 9:35 pm Заголовок сообщения: |
|
|
zhengxi писал(а): | Ты вставлял в форму или аплоадил файл ?
Может это браузер \0 портил при отправке ? |
В браузер я бы не рискнул такую гадость вставлять ) _________________ Þá skelfur askr Yggdrasils, ok engi hlutr er þá óttalaus á himni eða jörðu. |
|
Вернуться к началу |
|
|
|