dastapov: (Default)
Gather round and settle down for the next instalment of the ICFPC write-ups.

ICFPC stands for ICFP Contest (and ICFP, in turn, stands for International Conference on Functional Programming), and I have been participating in them since early 2000s and writing up my adventures here. My most famous writeup (in Russian) about the best ICFPC so far -- 2006 -- could be found here.

TL;DR: This year, our team name was "Folding at home", there were three of us + my wife who solved a bunch of puzzles manually (but did not write code). We wrote an interactive computer-aided solver in OCaml and finished 36th in the Lightning Round and 21st in the Main Round. I liked this year's contest more than 2020 (but less than 2006 :). Puzzle was somewhat similar to the Origami puzzle from ICFPC-2016.

And if you want to know more than just TLDR, prepare for the wall of text :) Let's go )
dastapov: (Default)
Time to break the long radio silence to treat you to another tale of my ICFPC adventures. For uninitiated, ICFPC stands for ICFP Contest (and ICFP, in turn, stands for International Conference on Functional Programming), and I have been participating in them since ... well, since time immemorial (2004? 2003?) and writing up my adventures here. My most famous writeup (in Russian) about the best ICFPC so far -- 2006 -- could be found here.

This time I am going to do the write-up in English because there would be lots of English text quoted, and because I want my teammate (Hi, Alex!) and colleagues to read it.Let's go... )
dastapov: (Default)
А вот как оно работало.

Сборка:


Разборка и переделка:

ICFPC-2018

2018-07-25 07:01 pm
dastapov: (Default)
В этом году ICFPC был про футуристическую 3D печать.

Коротко задачу можно описать так:

Вам дается описание 3d-модели, составленой из кубиков одинакового размера. Все кубики или стоят на земле или одной из сторон соединены с каким-то другим кубиком. У вас есть "нанобот", который может перемещаться в пространстве (наплевав на гравитацию) и "печатать" кубики в непосредственной близости от себя. Кроме того, от бота можно "отпочковать" нового бота (и так до 20 штук) и кроме того, можно временно "включить антигравитацию" в зоне печати, и тогда кубики, не прикрепленные к чему-то, будут висеть в том месте, в котором их напечатали. При отключенной антигравитации висящие в воздухе кубики считаются фатальной ошибкой и вызывают завершение программы.Read more... )

ICFPC-2018

2018-07-20 10:51 pm
dastapov: (Default)
Тем временем незаметно подкрался очередной ICFPC: https://icfpcontest2018.github.io/

В этом году программируем нано-3D принтеры.

Пока пишу сам, на ocaml-е. Если кто хочет за компанию - пишите :)
dastapov: (new)
Организаторы выложили результаты

Моя скромная команда сползла с 19-го места на 22-е (все равно, я считаю, офигенно для этого подхода к решению).

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

Lightning round полностью вручную взял jabber.ru, как уже было, кажется, в 2007-м году.
dastapov: (new)
Предыдущие части : день первый, день второй.

На третий день (традиционно, в 10:00) я обнаружил, что сполз до 42 места (из около 200 активных участников). Какое-то время ушло на вытягивание новых задач и разглядывание того, как другие участники решают мои задачи. В 11:00 я вернулся к написанию солвера.Read more... )
dastapov: (new)
(предыдущая часть, следующая часть)

Первый день у меня закончился тем, что я пробовал сделать модель "бумаги", которую можно будет "гнуть", и потом извлекать из нее результаты сгибания в виде, пригодном для отправки на сервер в качестве решения.Read more... )
dastapov: (new)
(Это первая часть рассказа, а вот вторая и третья)

В этом году ICFPC был про оригами.

Вам дается контур сложенной из бумаги плоской фигуры (в виде координат точек) и вы должны ее сложить. Для тех, кто уже офигел и не знает, за что хвататься, дается дополнительная подсказка - еще одна "картинка", показывающая все ребра и складки в этом контуре -- представьте, что вы смотрите оригами "на просвет", однако при этом все точно совпадающие складки и ребра сливаются воедино. Организаторы называли это "контуром" и "скелетом". Еще про оригами известно то, что оно сложено из листа бумаги размером 1x1. Read more... )
dastapov: (new)
По такому поводу можно вылезти из спячки :)

Через два дня (в пятницу, 6 августа) начинается ICFPC-2016. В прошлом году у меня поучастовавть не получилось, предыдущие два были (по моему мнению) так себе. Посмотрим, что будет в этом году.

PS: если вдруг кто еще не знает, что такое ICFPC, можете почитать мои старые отчеты, начиная с этого, они все под тэгом icfpc.
dastapov: (new)
Во-первых, поздравляю человека и парохода jabber.ru с победой в lightning раунде.

Во-вторых, на этом месте мог бы быть отчет, но писать особо не о чем. В этом году я пробовал что-то сделать самостоятельно, но буквально сразу увидел (кажется, на IRC) слово SECD и в результате отвлекся на чтение книжки Хэндерсона "Functional Programming Application and Implementation", которой явно вдохновлялись организаторы. В результате я узнал много нового и интересного о том, как можно использовать camlp4, чтобы реализовать "компилятор" из сделанного тобой DSL в OCaml, а также о том, что такое SECD-машина (как она дана у Хэндерсона, а не урезанный вариант из задачи этого года).

После возни с полноценной SECD-машиной мотивация делать обкоцанную SECD-машину у меня как-то пропала, и я для себя на этом ICFPC-2014 закрыл. А что у вас?
dastapov: (new)
Сегодня начинается ICFP Contest, также известный как ICFPC.

В этом году я ни с кем не кооперировался, никак не готовился, и вообще собираюсь писать на ocaml :) А вы?

PS: если вдруг кто еще не знает, что такое ICFPC, можете почитать мои старые отчеты, начиная с этого, они все под тэгом icfpc.
dastapov: (new)
Если вдруг кто еще не знает, то в этом году ОНО будет с 25 по 28 июля. Кто собирается участвовать?
dastapov: (new)

Эпиграф



Нас было 7 человек. У нас было 20 модулей на хаскеле, приватный репозиторий на гитхабе, 6 веток в этом репозитории, ImplicitParams, MagicHash и UndecidableInstances в коде и одна highmem нода на амазоне, а также hangouts для общения, юнит-тесты, просто тесты, google docs для заметок и куча статей про SMT-солверы. Не то что бы мы это все использовали, но на ICFPC ты ищешь в инете всякую дурь и бывает трудно остановиться. Единственное что вызывало у меня опасение - это SMT-солверы. Нет ничего более беспомощного, безответственного и испорченного, чем человек, читающий статьи в ходе контеста. Но я знал, что рано или поздно мы подсядем и на эту дрянь.

Краткое содержание для тех, кому лень читать все



Наша команда называлась "(unmatched", и состояла она из меня, Жени [livejournal.com profile] jkff, Ромы ro-che.info, Вани [livejournal.com profile] _navi_, Саши [livejournal.com profile] sorhed, Макса (которого нет в ЖЖ) и еще одного Саши [livejournal.com profile] wizzard0.

Мы набрали 1301 из 1820 возможных, из них 457 в lightning round, т.е. в первые 24 часа (UPD: и, похоже, заняли там 10 место! Аааааа!). Мы заняли место между 11-м и 25-м, но еще не знаем, какое конкретно.

Мы писали на Haskell и вот наш репозиторий.

Спасибо моим соратникам - вы все молодцы и умницы! Традиционное спасибо моей жене [livejournal.com profile] yulanta за моральную и прочую поддержку :)

А теперь - длинная история про то, как дело было.Read more... )
dastapov: (Default)
Вот они, родимые.

Мы - на позорном 131 месте. Где-то за 20 минут до финиша, когда мои товарищи по команде вырубались после бессонной ночи, возник вопрос - какой же солвер сдавать в качестве финального?

У нас их было два - один реализовывал А* поверх А*, как описано вот тут, не умел бэктрекинга, шел только вперед и выводил части программы по мере достижения очередной лямбды.

Второй солвер запускал два треда, и в одном крутил первый солвер, подсчитывая набранные очки после каждого выданного куска программы и запоминая лучший полученный результаты. Во втором треде крутился тупой-тупой А* над игровыми состояниями, целевой функцией которого было найти программу с оценкой лучше текущей имеющейся, а эвристикой - сумма расстояний до лямбд.

На мелких картах второй тред успевал перебрать все (или почти все) и выбраться из практически любой ловушки. На больших же картах он рисковал со временем пожрать всю память и быть убитым OutOfMemory Killer-ом (который живет в ядре linux). Если бы это произошло, то мы бы на такой карте не набрали ничего. Осознание этой засады пришло слишком поздно, и сделать какой-то монитор/ограничитель мы уже не успевали.

Забоявшись out of memory, я убедил полусонных Женю и Ваню, что сдавать надо первый вариант. В результате мы вылетели в первом раунде.

Второй вариант набрал бы как минимум 7200 очков (я запускал его на оценочных картах с лимитом в 30 секунд, а за 150, думаю, он мог бы набрать и больше) и мы были бы где-то в районе 50-60 месте. Ну, как известно, если бы да кабы ... :) Мораль придумайте сами.

Посмотрим, что будет в следующем году.
dastapov: (Default)

Обязательное вступление: что это вообще такое?


Каждый год случается международная конференция ICFP - International Conference on Functional Programming. К этой конференции приурочен програмерский конкурс под названием ICFPC. Несмотря на название конференции, участвовать в контесте может любой желающий, и пользоваться можно любыми языками, не только функциональными, кроме того - участники могут объединяться в команды. ICFPC отличается от соревнований типа ACM и topcoder тем, что он менее "заточен" под какие-то конкретные языки или наборы навыков, а задачи в нем прикольные и позволяют получить удовольствие не только от победы, но и от участия.

Я стараюсь принимать участие во всех ICFPC, и о том, как это было в прошлые годы, можно почитать в этом журнале по тэгу icfpc.

Подготовка


В этом году я заранее вписал даты в календарик, взял на работе отгул, и договорился с Женей [livejournal.com profile] antilamer и Ваней [livejournal.com profile] _navi_ о том, что мы будем выступать одной командой и писать на Haskell.

Моя жена собиралась где-то в это же время поехать с детьми на историческую родину, и мы подгадали поездку так, что на время ICFPC я остался один-совсем-один. Если быть точным, за 4 часа до старта я был в аэропорту и провожал их на самолет, и вернулся домой за 5 минут до начала.

Подготовка, таким образом, свелась к заливанию ssh-ключей на bitbucket (где у нас был git-репозиторий) и обмену контактами с остальными участниками команды :)

Старт и условие

Read more... )

ICFPC-2012

2012-06-21 04:57 pm
dastapov: (Default)
А кто что себе думает про ICFPC-2012? Кто собирается участвовать? На чем писать? Я в этом году твердо намерен не пропустить мероприятие - кто хочет объединить усилия?

UPD: договорился с [livejournal.com profile] _navi_ и [livejournal.com profile] antilamer.
dastapov: (Default)
Отсюда: The ICFP Programming Contest dates have been announced. The contest will run from Friday 13 July 12:00 GMT to Monday 16 July 12:00 GMT.
dastapov: (Default)
Кстати, а кто из участников ICFPC-2010 был из Киева? Я знаю себя и [livejournal.com profile] murkt (уверен на 90%), а кто еще?
dastapov: (Default)
Ну-с, отчет-репортаж написан, теперь можно дать волю эмоциям :)

Что мне понравилось?Read more... )
dastapov: (Default)
Этот пост - о том, как мы строили машины, фабрики и гнали бензин на ICFPC-2010.

Кто еще не знает, что это такое - может пройти в сад почитать мой отчет об ICFPC-2006. Всех же остальных я не буду мучать долгими вступлениями и сразу перейду к сути.Read more... )
dastapov: (Default)
Я слоупок опять все пропустил: уже есть результаты ICFPC'09.Read more... )
dastapov: (Default)
Имя команды: li-monad (спасибо aleksey/jabber.ru за идею)
Состав: я, endless-world, [livejournal.com profile] iakovz, при участии blancus.
Итоговый бал: 2234.7171 (12 problems solved)

Поскольку scoreboard традиционно перестал обновляться за пару часов до окончания соревнования, мне сложно сказать, какое же место мы заняли в конце-концов. Если все остальные участники расслаблялись перед финальным свистком и ничего не делали, то это будет 59-е место.  Но скорее всего в расстановке сил перед самым финишем наверняка произошли существенные изменения, и я буду рад, если нас не "выдавят" хотя бы из первой сотни.

Читать в деталях )

ICFPC'09

2009-06-24 01:24 pm
dastapov: (Default)
Если вы, как и я, регулярно путаете июнь и июль, то знайте, что до ICFPC'09 остался вовсе не месяц, а всего два дня! :)

Сайт соревнования: http://icfpcontest.org

Обсуждение в jabber: конференция icfpc@conference.jabber.ru

Обсуждение в IRC: #icfp-contest на freenode
dastapov: (Default)
Сорока на хвосте принесла новость о соревновании для (русскоязычных) программистов, которое будет проводится с 5-го по 12-е марта.

Организаторы обещают фан на уровне ICFPC. Надеюсь, образца 2006-го года :)

Читаем и участвуем: http://stanfy.com.ua/contest/
dastapov: (Default)
Итак, организаторы выложили предварительные результаты ICFPC-2008. Победитель определялся серией "заездов", в каждом из которых выбывало какое-то количество участников, и организаторы выложили результаты первых семи подобных раундов.Read more... )
dastapov: (Default)
Под катом - немножко ссылок на ICFPC-шные делаRead more... )
dastapov: (Default)
Это окончание рассказа. Линки на начало и середину.

13 Jul 2008. Начало второго полного дня соревнований. До финиша - где-то 35 часов.

Утром тринадцатого числа наш марсоход мог быть укомплектован тремя безбашенными стратегиями локального управления разной степени расхлябаности, которые, тем не менее, умудрялись периодически доводить его до цели.Read more... )
dastapov: (Default)
Это вторая часть рассказа. Линк на начало.

12 Jul 2008.

Однако, я только и успел, что выписать определения сообщений, которые придется принимать от марсохода и передавать ему. Сразу после этого в jabber-е прорезался [livejournal.com profile] yvl, который двигает науку в области робототехники. Сам он по стечению обстоятельств в соревновании участия не принимал, но интересовался моим мнением о задаче.

У нас завязался увлекательный разговор, первые пятнадцать минут которого напоминали скорее монолог: [livejournal.com profile] yvl вещал, я записывал на листик неизвестные мне термины и понятия. В результате я вынес из нашего общения несколько ценных крупиц знаний:
1)Все могло бы быть и хужеRead more... )

Profile

dastapov: (Default)
Dmitry Astapov

May 2022

M T W T F S S
       1
2345678
9101112131415
161718 19202122
23242526272829
3031     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags