Dmitry Jemerov ([info]yole) wrote,
@ 2007-07-27 00:24:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
ICFP Postmortem: Team ryba, part 2
(начало здесь)

Итак, как гласят логи нашего Subversion, после обнаружения очень интересной картинки мы продолжали ковырять интерпретатор. Майк продолжал заниматься оптимизациями интерпретатора DNA, Лёша переписывал алгоритм flood fill с рекурсивного на итеративный, а я тем временем делал структурированную дампилку выполняемых RNA-команд, которая вместо отдельных команд mark, move и задания цветов печатала координаты и цвета рисуемых линий. Роман же засамбитил на сервер второй из префиксов с интересной картинки, и выяснилось, что он включает свет. Этого оказалось достаточно, чтобы обеспечить нам целых полтора процента выживания и вывести нас в top 20. Из него мы, кажется, не выпадали ни разу до самого конца конкурса (даже когда он сократился до top 15).

Пока Майк продолжал заниматься оптимизациями, я пытался найти багу в текущей имплементации, из-за которой мы не проходили последний шаг self check. Разбираться в этом было на редкость тоскливо. Даже когда мне удалось выяснить, что на 28й итерации мы продалбываем кусок DNA в самом хвосте, который потом безуспешно пытаемся найти на 140й итерации, понять, на какой именно из 28 итераций мы делаем что-то не так, шансов было мало. Совсем было отчаявшись, я решил написать альтернативную реализацию на Haskell, про который до этого читал книжку, но писать ничего не пробовал. Увы, попытки быстро-быстро изучить незнакомый язык полвторого ночи оказались практически безуспешными, и то, что очередная оптимизированная Майковская имплементация начала полностью проходить self check сама по себе, оказалось большим облегчением.

(YourKit, кстати, наше всё. Иметь мощный и знакомый инструментарий помогает очень здорово. А вот с Subversion всё было не очень гладко - для всяческих экспериментов народ постоянно дописывал и комментировал кусочки кода примерно в одних и тех же местах, постоянно приходилось резолвить конфликты при мёрже, и, кажется, пару раз какие-то изменения терялись. Заодно я пронаблюдал пару трудновоспроизводимых багов в идейской svn-интеграции - но разбираться подробнее времени не было совсем.)

Дальнейшие несколько часов были, наверное, самыми увлекательными во всём контесте. Наконец-то правильно работающий интерпретатор позволил нам отрендерить последний из имеющихся префиксов и получить инструкции по навигации по хелпу. Куда и как запихивать номера страниц, Майк понял быстро, и мы смогли получить индекс страниц в хелпе и все перечисленные там страницы (кроме тех, которые были помечены заманчивым словом encrypted).

(Олег тем временем, уже сидя дома, выложил реализацию интерпретатора на .NET, но наша часть команды никакой пользы из этого извлечь не пыталась.)

Страничка про security features вызвала у меня бурный энтузиазм "о-о, это подстановочный шифр, дайте же я скорее его разгадаю!", и я бросился руками восстанавливать таблицу подстановки, так до самого конца и не сообразив, что шифр этот всего лишь ROT-13. Тем не менее, основное время ушло не на расшифровку, а на то, чтобы набить ручками два с половиной килобайта бессмысленного текста. (Другой народ успел аж OCR-утилитку написать, а мы всё по старинке, ручками...) Расшифрованный текст, как оказалось, описывал некий алгоритм шифрования.

Куда более многообещающей оказалась страница 42, содержащая список генов. Точнее, его маленькую часть. :) Но пока Майк перебирал не перечисленные в каталоге номера страниц в надежде найти ещё что-нибудь интересное, я сообразил, что первая строчка в списке генов (AAA_geneTablePageNr) очень похожа на переменную, и её значение не так сложно поменять. Следующие полчаса ушли на то, чтобы отрендерить остальные 13 страниц списка. (Хорошо Майку - он на своём четырёхпроцессорном Mac Pro запускал по 4 рендера параллельно, а я-то всё на ноуте своём ковырял, он хоть и Core 2 Duo, но больше одного рендера тянул с трудом.)

Ещё одна страничка из хелпа научила нас запускать гены из таблицы поштучно, чем мы и воспользовались для того, чтобы отрендерить пару описаний старых ICFP и ещё одну страничку хелпа.

И хотя спать всё ещё практически не хотелось (без всяких стимуляторов - за всё время контеста я выпил всего одну банку ред-булла и чашки 4 кофе), было уже пол-седьмого утра, и мы решили расползаться по домам.
to be continued...


(Post a new comment)

ау конкуренты, поздравляю!
[info]ant0nio
2007-07-27 07:14 am UTC (link)
а все таки ,читаю разные отзыввы ничего новго.
рисовать сверху полигоны или куски картинки это круто
а все таки кто нибудь рюхнул адаптивные гены?
по дороги починики bmu кто нибудь пошел?
вот мы рюхнули как устроены адаптиные гены (там лямбда исчисление) и починили
действительно сломанный bioMul ( об это написано на слайде help_initialCond), но от этого биоморфер не починился, как он рисовал верблюда/слона так ничего не изменилось. просто интересно что было сделано не так, так как я понимаю, что адпатиные гены это правильный путь решения задачи :)

второй вопрос про кодировку символов, она обычная аскии или нет. 16*12 таблицу битов мы не рюхнули куда сувать. Да мы даже напечаттать ничего не смогли, вызывали drawstringhere но не вышло -- не поняли как ей надо параметры передавать, нет же доки про порядок итп. вроде массив 9*129 и указатель 24*2 на фонты надо положить на стек, но почему то не фурычило.... может цвет надо было выбрать? или...... жаль мы текстом поздно занялись....

кстати дайте линк на вашу картинку, ее можно получить в разделе сабмит нажав на риск вашей лучшей комбинации.....

с приветом, error 404

(Reply to this)(Thread)

Re: ау конкуренты, поздравляю!
[info]yole
2007-07-27 08:36 am UTC (link)
Продолжение всё ещё следует. И про кодировку расскажем, и про биоморфер. А полигоны рисовать - это не про нас, мы другим путём пошли. :)

А линк на картинку мы не дадим, потому как судьи просили команды из top 15 не разглашать результаты до их объявления.

(Reply to this)(Parent)

Re: ау конкуренты, поздравляю!
[info]mm_aa
2007-07-27 09:28 am UTC (link)
> рисовать сверху полигоны или куски картинки это круто

Мы этого не делали совсем. Хоть нам и непрерывно твердили что надр было нарисовать солнышко и вагончик - потому что мы их не сломали. Думаю таки надо было нарисовать.

>а все таки кто нибудь рюхнул адаптивные гены?

Да. Но поскольку я уже к тому моменту пофиксил bmu - решили не заморачиваться. Я чуток поигрался с рыбками - ничего не добился и отложил их.

> вот мы рюхнули как устроены адаптиные гены (там лямбда исчисление) и починили

Скорее маленький ML.

> просто интересно что было сделано не так, так как я понимаю, что адпатиные гены это правильный путь решения задачи :)

Я абсолютно уверен что наши хакерские методы - не правильное решение задачи :)

(Reply to this)(Parent)(Thread)

Re: ау конкуренты, поздравляю!
[info]kadim
2007-07-27 09:31 am UTC (link)
> Я абсолютно уверен что наши хакерские методы - не правильное решение задачи :)

Только этим можно уже гордится :) Неправильные методы приводящие к результатам это сложнее правильного пути решения

(Reply to this)(Parent)


Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…