Список форумов ZCon ZCon
Соревнования по программированию
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Ваши решения для задачи "Автоархив"

 
Начать новую тему   Ответить на тему    Список форумов ZCon -> ZCon 2008
Предыдущая тема :: Следующая тема  
Автор Сообщение
Turbo
Site Admin


Зарегистрирован: 19.02.2006
Сообщения: 248

СообщениеДобавлено: Ср Апр 16, 2008 8:54 am    Заголовок сообщения: Ваши решения для задачи "Автоархив" Ответить с цитатой

В этой теме можно обсудить ваш подход к решению этой задачи.

Применяли ли вы какие-то наработки из архиваторов или писали свое решение?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
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 не догадася Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
rand08



Зарегистрирован: 22.03.2008
Сообщения: 5

СообщениеДобавлено: Ср Апр 16, 2008 12:50 pm    Заголовок сообщения: Ответить с цитатой

Сначала накидал LZW, вышло ~50Кб.
Потом написал SR, стало ~42Кб. Теоретически можно было уменьшить результат ещё на 2-3Кб.
PS. А юзать готовые исходники lpaq неинтересно Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
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.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов ZCon -> ZCon 2008 Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group