Re[4]: ICFP 2007 начинается сегодня
От: _DAle_ Беларусь  
Дата: 23.07.07 18:47
Оценка: 43 (5)
22.07

02:00 Прошло много времени с того момента, как мы послали префикс, но наше место в таблице с тех пор практические не изменилось. Было видно, что тормозим не одни мы. Надо еще сказать, что в irc сети freenode.net был канал #oasis, посвященный ICFP. В нем участники разных команд иногда рассказывали свои проблемы и всколзь упоминали о своих достижениях. В основном жаловались на медленный DNA->RNA конвертор. У кого-то было несколько итераций в секунду. У нас было 250. Кто-то хвалился 30000. Хотя многие не напиали еще даже транслятор.
...
11:00 Когда я проснулся, оказалось, что у crem'a умер основной комп. svn был на другом.

12:00 Сделал нормальный лог в конверторе, чтобы можно было посмотреть, что происходит на итерациях.

14:00 Наконец-то мы догадались. На первой итерации обработки repair guide префикса где-то далеко происходила замена I на С. Наконец-то мы додумались посмотреть, что же лежит за этим I, там лежало много символов I, а затем P, то есть число 0, и менялось оно на число 1. Для перехода на другую страницу надо было всего лишь менять 0 не на 1, а на другое число. Сформировали быстренько вот такой IIPIFFCPICFPPICIICCCCCCCCCCCCIICIPPPFCCFFFCCFCFIIC
префикс для 1337.

15:00 HeaDacHe начал переписывать DNA->RNA без копирований. В это время мы наконец-то получили 1337 страницу.. Стало ясно, что нам нужно намного быстрее получать картинки. Но это был наконец-то первый прогресс за много часов.

16:30 Я наваял маленький генератор префиксов для страниц, стали ждать конвертацию. Тут нам привалила большая удача в лице Zis'a, который начал участвовать один, а теперь примкнул к нам. Его DNA->RNA, написанный на С++, работал с фантастической скоростью примерно в 50000 итераций в секунду. Тем временем мы уже опустились на 38 место.

17:30 Теперь у нас была куча новых страниц с кучей разрозненной информации. Оказалось что ДНК состоит из трех частей: красной, зеленой и синей. Синяя часть представляла собой стек, куда передавались параметры, зеленая же никогда не меняла своих размеров. Также появилась у нас и первая страница списка функций, которые были зашиты в ДНК. Выглядела она так. Также нашелся Intergalactic character set. Еще была очень важная страница, где описывалось, как можно вызывать отдельные функции из ДНК с помощью адаптера. Часть страниц была с какой-то информацией, одна с закодированным текстом, одна про Lindenmayer-systems... Есть еще картинки пустые. Похоже — закодированная РНК. В общем, загрузились новой информацией.

18:00 'Закодированный' текст оказался совсем просто закодированным, но пока был нам не сильно нужен. Zis начал писать на python'e вызов функций по смещению с помощью адаптера.

19:00 Вызовы функций давно готовы, по инициативе pinc'a пробуем получить другие страницы списка функций с помощью вызова функции AAA_geneTablePageNr. Что-то не получается.

21:00 Обнаруживаем, что в табличке вместо top-20 стало top-15 и у верхних префикс просто на единицу короче, делаем тоже самое Тот же результат, но формально 22 место.

21:45 pinc'у удается вызвать функцию отрисовки земли. Сдвинулись с места.

22:00 Есть уже набор разных спрайтов, рисующих части картинки, что с ним делать не сильно понятно.

23:00 crem придумал, как получить остальные страницы со списком функций. Оказалось, что AAA_geneTablePageNr — это не функций, я переменная, и туда надо всего лишь записать номер нужной нам страницы. Сгенерили все 14 страниц, куча различных функций от сложения чисел до рисования начальной картинки с солнцем. Решаем, что надо всю эту таблицу функций собрать в текстовый файл. Начинаем втроем руками набивать смещения и названия функций, автоматически не распозналось.

00:00 Пока мы набивали функции Zis занимался раскодированием текстов.

23.07

00:15 Zis нашел шуточное послание:

Help! We are a group of computer scientists held prisoner on the remote planet of Utrecht in the Orion nebula by the evil Fuun The Fuun have already conquered thousands of worlds, and it appears that Earth is next Their modus operandi is always the same: they organize a fake `programming contest' on the victim world to repair a supposedly disabled Fuun This enables them to identify that planet's best and brightest minds, who are then eliminated in advance of the actual invasion, leaving the planet defenseless against the Fuun's superior weaponry You must not, under any circumstances, repair the Endo creature, as he when reactivated will surely destroy his `rescuers' and give the attack signal to the Fuun invasion force massing near Sullust Do not give in to the lure of rewards, monetary or otherwise! It is too late for us, but in the unlikely event that Earth manages to stave off the Fuun invasion, we would appreciate a monument of some sort to honour us especially since we sabotaged the Fuun DNA by swapping some parabolas We are: Alexey Rodriguez Andres Loeh Arie Middelkoop Bastiaan Heeren Chris Eidhof Clara Loeh Eelco Dolstra Eelco Lempsink Jeroen Leeuwestein Johan Jeuring John van Schie Jurriaan Hage Maaike Gerritsen Mark Stobbe Martijn van Steenbergen Stefan Holdermans

piтс в это же время нашел 3 странички с описанием параметров части функций.

01:00 Построили список "дыр", которые есть в таблице функций. Думаем, как отрисовывать нужную нам картинку. К этому времени можно было уже писать скрипты на питоне, вызывающие функции по имени, устанавливающие значения переменных и т.д. (не зря же руками 14 страниц набивали). Чтобы сгенерировать префикс, рисующий дерево и заканчивающий работу надо было всего лишь написать что-то вроде print call('appletree') + quit(). Осталось 12 часов, у нас еще никакого результата.

01:30 Баловались с разными функциями. set_bool('ocamlrules', True) + call('ocaml') + quit() рисует верблюда вместо коровы это нам не нужно.

01:40 Zis откуда-то нашел еще штук 10 страниц с документацией по функциям.

02:30 Только у 23 команд пока результаты лучше нашего. Что-то организаторы не рассчитали со сложностью. Zis вытянул из дырок между функциями еще кучу картинок сомнительной пользы (хотя скорее всего просто мы не знаем для чего некоторые из них нужны). Вот одна из них.

02:40 Рассмотрели среди функций setOrigin.

03:30 Получилось отрисовать уток и холмы недалеко от их расположения, но непонятно как поверх них нарисовать сетку, которая присутсвует на картинке, да и холмы что-то совсем плоххо рисуются. Похоже все спят кроме нас с crem'ом.

04:00 Отрисовали уток поверх солнечной картинки, сравнили, не так уж плохо даже без сетки, половина пикселов где-то совпадает. Отослали — 1.33%, 19 место, наконец-то мы сдвинулись.

04:20 Отрисовали уток на 2 пиксела выше. 18 место, 1.4%. С солнцем и облаками так просто ничего не выходит. Возможно закодированы.

04:50 Нарисовали кита в нужном месте (на самом деле ошиблись на пиксел) 1.44%, опять поднялись на 18.

05:30 Больше ничего так тупо отрисовать не получается. Иду спать на три часа.

11:45 pinc будит меня телефоном, crem оказывается тоже проспал и его до сих пор нет. Остается час. Оказывается утром народ понял как повернуть лопасти мельницы. Это нужно было делать с помощью команды setGlobalPolarRotation, вызванной до всего. Посылаем. 4.66%, 17 место.

12:30 crem пробует рисовать по частям корову. Кита чуть-чуть сдвигаем, получается 4.68%.

13:00 Лихорадочно пробовали (в основном crem пробовал) что-нибудь еще отрисовать, ничего не успеваем. Финиш. 20 место, неплохо.
Итоговый питоновский скрипт, генерирующий префикс выглядел вот так
set_bool('night-or-day', False)
int_param(5)
call('setGlobalPolarRotation')
call('main')
int_param(9)
int_param(291)
call('setOrigin')
call('motherDuckWithChicks')
int_param(399)
int_param(508)
call('setOrigin')
call('whale')
call('terminate')


Думаю, что видели мы достаточно мало. Там еще и закодированные РНК и композиции функций и еще черт знает что есть, множество всяких полунамеков... Но это все было круто
Отредактировано 15.04.2015 14:18 _DAle_ . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.