jsn: (Default)
[personal profile] jsn

...вернее, из Эдинбурга. Не хотел писать отчёт об ICFPC до первых результатов, и -- вот они.

13 июля мы, как обычно, участвовали в ICFP Programming Contest-е. Команда наша называлась, как обычно, nbu (а ваша как?). Задачу этого года описывать не буду, вот у [livejournal.com profile] sorhed-а и вот у [livejournal.com profile] _adept_-а. Pun на тему "Lambda Lifting" и всё такое. Вот здесь можно попробовать поиграть в игру, в которой соревновались программы участников контеста. По сути, задача была на hill climbing, явно не то, что мы любим больше всего, но свою дозу фана мы вполне получили. Поменьше, может, чем в 2011-м, но куда больше, чем в 2009-м. Впрочем, за себя говорю, не знаю, как [livejournal.com profile] brohm.

Участвовали: [livejournal.com profile] brohm и искренне ваш, а также [livejournal.com profile] kolomaxes (guest star). Мы с [livejournal.com profile] brohm-ом делали основной heavy [lambda] lifting, [livejournal.com profile] kolomaxes делал всякие мелкие обвязки (а также нарисовал нам пару карт, которые демонстрировали недостатки стратегий, это было ценно).

Сразу после прочтения таска стало понятно, что это про hill climbing, и надо, скажем, запилить A* для начала, а там уж думать дальше. Также было понятно, что людей у нас мало, поэтому всё, что можно было бы реализовать, реализовать не получится, и надо как-то особо не растекаться мыслью. A* я запилил на Си с libgc, натурально. (Вообще, по опыту всех этих контестов, почти в каждом из них в нашем решении был центральный кусок инфрастуктуры, написанный на Си и в значительной степени мной. Разве что в 2011-ом я писал такой центральный кусок на scheme. Наводит на мысли).

К окончанию первых суток (lightning division deadline) у нас было, на мой взгляд, нечто вполне приемлемое для сельской местности. Но, к сожалению, мы что-то напортачили с отправкой решения организаторам, и теперь не узнаем, как наше изделие смотрелось бы на общем фоне. А жаль.

Дальше двое суток мы собирали и тьюнили A*-оские метрики, и искали способы сделать A* менее перфекционистским. И то, и другое принесло кое-какие, не то чтобы сногсшибательные, результаты. По-хорошему надо было на этом этапе делать как минимум двухуровневый A*, в котором верхний перебор идёт по грубо сформулированным целям, а нижний -- по траектории. Мне это было ясно ещё к исходу первых суток, но не менее ясно было, что в существующем составе мы этого скорее всего не успеем. Поэтому было решено высоко не прыгать, и т.д. В результате минут за 5 до дедлайна отправили изделие, которое пробует четыре разных варианта A* и выдаёт наилучшее найденное решение. ~ 1.3k строк Си ~ 50 строк перла для обвязки, плюс-минус.

Учитывая всё это (и задача не самая любимая, и рук драматически не хватало), я был бы доволен нашими результатами, если бы мы вошли в верхний квантиль. Однако, удивительное дело -- сегодня опубликовали первые результаты, и по ним мы в Top 10. Неожиданно. Woo-hoo, так сказать.

Date: 2012-08-01 05:49 pm (UTC)
From: [identity profile] kika.livejournal.com
wow, круто, чо!

Date: 2012-08-01 05:50 pm (UTC)
From: [identity profile] kika.livejournal.com
а где ссылка на гитхаб?

Date: 2012-08-01 06:10 pm (UTC)
From: [identity profile] jsn.livejournal.com
we are very private people.
https://redmine.sept2000.ru/projects/icfpc2012/ is as close to that as it gets.

Date: 2012-08-01 05:51 pm (UTC)
From: [identity profile] tolok.livejournal.com
Молодцы!

Date: 2012-08-01 05:51 pm (UTC)
From: [identity profile] nastty.livejournal.com
круто!

Date: 2012-08-01 05:54 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
О! Вот как надо было работать. Поздравляю!

Date: 2012-08-01 06:11 pm (UTC)
From: [identity profile] jsn.livejournal.com
Спасибо :) А ваша-то команда как звалась?

Date: 2012-08-01 07:32 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
futamora, что ли...

Date: 2012-08-01 08:57 pm (UTC)
From: [identity profile] jsn.livejournal.com
Futamura Rejection? и [livejournal.com profile] sorhed там же, правильно?

Date: 2012-08-02 11:00 am (UTC)
From: [identity profile] sorhed.livejournal.com
Да, печально всё у нас. Финальный сабмишн нам вообще не засчитали, что странно. Перепроверю.

Date: 2012-08-01 06:29 pm (UTC)
From: [identity profile] brohm.livejournal.com
не, ну нихрена себе ваще!!!

не, ну офигеть же вообще!!

Date: 2012-08-01 06:33 pm (UTC)
From: [identity profile] jsn.livejournal.com
Вы знаете, коллега, я склонен согласиться с вашим вердиктом.

Date: 2012-08-01 09:42 pm (UTC)
From: [identity profile] dmarck.livejournal.com
вот да.

молодцы, ничего не скажешь...

Date: 2012-08-01 07:06 pm (UTC)
From: [identity profile] alexott.livejournal.com
wow, вы монстры...

Date: 2012-08-02 10:21 am (UTC)
From: [identity profile] zamotivator.livejournal.com
И, что интересно, на банальном Си. Видать пофигу на язык...

Date: 2012-08-02 11:00 am (UTC)
From: [identity profile] sorhed.livejournal.com
Задача в этом году была не ФП-friendly совершенно.

Вот в прошлом...

Date: 2012-08-02 11:02 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Гм, по-моему куда уж более friendly... озвучьте критерии, что ли.
И да, напомните, пожалуйста, какая задача была в прошлом году.

Date: 2012-08-02 11:06 am (UTC)
From: [identity profile] sorhed.livejournal.com
Не-friendly — «в области есть множество наработанных алгоритмов, сформулированных императивно, которых удобно писать прямо так, а не пытаться выражать идиоматически для ФП».

Friendly — это когда задача в области, традиционно предпочтительной для ФП-идиом. В прошлом году, например, были соревнования по построению из SKI-комбинаторов разных штук, убивающих ячейки друг друга.

Я мониторю задачи с 2006 года. Friendly были задания в 2006, 2007, (частично) 2009, 2010 и 2011.

Не-friendly — 2008, (частично) 2009, и 2012.

Date: 2012-08-02 11:07 am (UTC)
From: [identity profile] zamotivator.livejournal.com
А, вспомнил задачу прошлого года. Я её даже понять толком не смог, не говоря уж про реализацию...

Date: 2012-08-02 11:08 am (UTC)
From: [identity profile] sorhed.livejournal.com
На самом деле, конечно, DISREGARD THAT I SUCK COCKS. В смысле, чего жаловаться на идиоматичность, раз мы считаем, что за ФП будущее и оно подходит для всего.

Date: 2012-08-02 11:13 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Респект за самокритику

Date: 2012-08-02 11:39 am (UTC)
From: [identity profile] jsn.livejournal.com
Наводит на мысли, я и говорю. Забавно, все эти Хаскеллы, Скалы и МЛи выглядят для меня абстрактно-привлекательно, но как только доходит до реальной драки, по факту оказывается, что выбор у меня простой: если задача требует гибкости, то дайте мне какой-нибудь разумный лисп (scheme, ruby, даже перл или питон сойдёт, если всё совсем плохо), а если производительности -- то я возьму Си с опциональным libgc on top.

Причём надо понимать, что Си я беру в руки примерно раз в году ровно по этому поводу. Не то чтобы я на нём в последние лет десять много чего писал, и не то чтобы я в нём в очень хорошей форме.

Date: 2012-08-01 07:50 pm (UTC)
From: [identity profile] d1ffuz0r.livejournal.com
крутота

Date: 2012-08-02 11:02 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Вопрос залу - а есть возможность потренироваться на этой задаче сейчас?

Ну там скачать задание, checker, и так далее. Не?

Date: 2012-08-02 11:33 am (UTC)
From: [identity profile] jsn.livejournal.com
Ну там всё на сайте контеста, можно брать-играться. Чекеры онлайновые, от 3rd parties и от оргов какое-то время ещё будут жить, полагаю.

Date: 2012-08-02 02:20 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Круто!
Page generated Jan. 3rd, 2026 06:51 am
Powered by Dreamwidth Studios