Ры (pbl) wrote,
Ры
pbl

ICFPC 2011

ICFPC 2011,
или ((((S ((S (K S)) K)) ((S ((S (K S)) K)) I)) (((S ((S (K S)) K)) I) succ)) zero) колесо

((((S ((S (K S)) K)) I) succ) zero)

Суббота началась отвратительно, продолжилась хуже, а закончилась для меня вообще никак.

Обычно в выходные дни я просыпаюсь по будильнику строго в десять часов; в этот же день будильник я успешно проспал и встал ближе к двенадцати - с изрядной головной болью. Подозреваю, что мозголомность задачки тут была решительно ни при чем, просто мой труп очень чутко, и даже трепетно, относится к вопросам спанья, и сдвиг на пару часов вызывает у него неадекватно бурную реакцию.

Это, впрочем, были еще мелочи.

Влад, по-видимому, проснулся ни свет ни заря, полез копаться в коммитах за ночь, и увиденное там крайне его расстроило, опечалило и где-то даже огорчило. Вся моя писанина была предана анафеме по категории USS Enterprise, ампутирована по методу Гордия и заменена "простыми ботами". Как раз к моменту моего пробуждения.

Простые боты содержали в себе сотни™ принтов, парсеры стдина, и не умели, я извиняюсь за прямоту, нихуя. Продуктивненько.

Я промолчал и сел смотреть, что за чертовщина вообще происходит.

Вскоре earthdok вполне резонно заметил, что надо бы начинать пробовать простые стратегии, на что я сухо ответил, что StrategyBot был усечен со всем прочим. Так что пробовать стратегии не на чем. И что реплеев больше нет. И плейбэка нет. И компетишна нет.

На этом месте Влад почему-то удивленно спросил: "Подожди, а это все работало?" Я, признаюсь, немножко поорал.

Влад сказал, что запустил стратегию, увидел эксепшн, и решил, что ничего вообще нет, а весь ЭНТОРПРАЙЗ нужен только ради ЭНТОРПРАЙЗА. Мне полегчало. Я сказал, что он падает с эксепшном, если стратегия возвращает None вместо хода. Чего стратегия делать не должна, но моя тестовая - делает. Чтобы не крутить все сто тыщ циклов, в которых ничего не происходит.

Впрочем, полегчало мне слишком рано.

fj выдвинул пачку резонных претензий ко всей этой иойне, на которые мне было очень трудно отвечать под боевые кличи о поганом ЭНТОРПРАЙЗЕ (господи, ненавижу ебаных клингонов) со стороны Влада и earthdok'а, поскольку я-то как раз не пытался нарисовать Идеальную Архитектуру С Бесконечной Расширяемостью И Тонко Разделенной Экспертностью, а всего лишь хотел добиться очень простой вещи: чтобы забытая диагностика не роняла наши ебаные боты при деплойменте за несоответствие правилам. Я уж не знаю, сколько раз людям на этой хуйне надо обжигаться, чтобы наконец ее вкурить. Изолированная работа с риплеями и форматами вывода была всего лишь вишенкой. Ну или ЭНТОРПРАЙЗОМ - это уж кому как.

Башка у меня трещала все сильнее.

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

Влад в конце концов решил сделать все с нуля с пиноклем и конкубинами (и, о господи, output_level - and I thought no one was quite that naive anymore), но хотя бы не трогая стратеджи бота.

Я умыл руки и тихо ковырялся со стратегиями. К четырем я мог собрать любой терм (f i j n) (уже не теоретически, а вполне конкретно), и первый раз успешно сходил отаке, отгрызши немного хитов у одного из слотов айдл-бота. Еще через час у меня был тупой убиватор, который прокачивал слот-батарейку до максимума, а потом херачил лазором по врагу. Влад за это время успел предать анафеме и вообще написание стратегий на данной стадии, ибо сначала надо Понять Игру И Оптимально Линеаризовывать Произвольные Термы!

Насчет линеаризации произвольных термов я вообще очень двоякого мнения. С одной стороны - это охуенно круто, и сам бы я этого сделать не смог, или по крайней мере разломал бы себе весь мозг. Однако потом выяснилось, что произвольный лямбда-терм на голых апликациях имеет в худшем случае сложность O(33n) or something like that. За счет искоренения абстракции, которая сама по себе экспоненциальна, плюс линеаризации терма комбинаторами, которая тоже экспоненциальна. А оптимизируется все это гетами, ибо они не зря нам дадены.

Короче, от всего этого мне сделалось особенно тепло и пушисто в районе почек, так что я от злости взял таймаут, лег и засунул в себя сотни парацетамола. От парацетамола мне сделалось ваще заебись, ибо трещание башки не прошло, зато совершенно бесплатно зверски скрючило желудок. С этого места и до следующего дня я не делал вообще ничего, потому что попускать меня начало только около полуночи.

earthdok тем временем написал няшный хтмльный визуализатор. Влад написал заново риплеи безо всех этих обстракций™ и начал заниматься линеаризатором. К десяти часам в новом боте появилась стратегия, убивающая один слот (если я правильно помню, без хила - быстрой атакой из двух слотов). Я к этому времени выпал из беседы чуть менее, чем полностью, поучаствовав только немного в обсуждении комбинаторной логики per se и построения практически полезных комбинаторов. Поскольку виталити у меня все еще был довольно низок, нес я там неимоверную хуйню, и хвала аллаху, что ее никто не слушал.

Примерно на этом месте я окончательно отполз от компа в крайне ядовитом настроении (вот и сейчас оно вернулось, чувствую). Влад, earthdok, cail и fj стали готовить первый сабмишн на дуэльный сервак. Кайло там применялось в некоторых масштабах, но в подробностях я не разбирался. Влад переписал алгоритм, добавив к быстрой убивалке слота зомбака, который хилом мочил слоты 0 и 1, и в таком виде бот остался на ночь. Проявил он себя охуенно хорошо, поскольку, по-видимому, было довольно много алгоритмов, жестко завязанных на эти слоты (они же такие удобные), а мочилка мочковала очень быстро и выигрывала со счетом 256:253. Именно этот алгоритм и лег в основу финального сабмишна, кстати.

Но впереди оставался еще ажно целый день третий.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments