Персональные блоги → Отчеты о ICFPС'11
Вот и закончились очередные 72 часа, в течение которых порядка 300 команд пытались решить задание в рамках ежегодного соревнования от ICFP.
Предварительные результаты (замороженные за 12 часов до окончания), можно посмотреть на сайте организатора, там же можно прочитать и задание этого года.
Итак, список русскоязычных отчетов, найденных на просторах интернета:
Предварительные результаты (замороженные за 12 часов до окончания), можно посмотреть на сайте организатора, там же можно прочитать и задание этого года.
Итак, список русскоязычных отчетов, найденных на просторах интернета:
Персональные блоги → ICFP Contest 2011 уже скоро
Освобождаем расписание и готовимся.
В ночь на пятницу 17 июня в 04:00 MSK стартует 14-й ежегодный конкурс ICFP Programming Contest. Завершение гонки — в 04:00 МСК в ночь на понедельник 20 июня.
Официальный сайт: www.icfpcontest.org/
В отличие от предыдущих лет, в этот раз НЕ будет промежуточного 24-часового lightning division.
Отчёты предыдущих лет:
ICFP 2010
ICFP 2009
В ночь на пятницу 17 июня в 04:00 MSK стартует 14-й ежегодный конкурс ICFP Programming Contest. Завершение гонки — в 04:00 МСК в ночь на понедельник 20 июня.
Официальный сайт: www.icfpcontest.org/
В отличие от предыдущих лет, в этот раз НЕ будет промежуточного 24-часового lightning division.
Отчёты предыдущих лет:
ICFP 2010
ICFP 2009
Персональные блоги → Отчёты ICFP Contest 2010
С пятницы 18 июня 2010 с 16:00 МСК по понедельник 16:00 МСК — в течение ровно 3 суток — проходил ежегодный конкурс ICFP Programming Contest.
В этот раз задание, безусловно, было весьма интересным и уступало разве что заданию 2007 года (строки ДНК и изображения).
Немого о задании.
В этот раз задание, безусловно, было весьма интересным и уступало разве что заданию 2007 года (строки ДНК и изображения).
Немого о задании.
Персональные блоги → ICFPC 2010
Совсем скоро, в эту пятницу стартует уже тринадцатый ежегодный контест по программированию, приуроченный к ежегодной же конференции по функциональному программированию.
В прошлых годах участникам приходилось заниматься археолингвистическим программированием (2006), приспосабливать инопланетянина вместе с его НЛО к жизни на Земле (2007), управляя марсоходом, спасаться от злобных марсиан (2008) и летать спутниками в околоземном пространстве (2009).
Если кто-то хочет освежить память — год назад я собрал ссылки на русскоязычные отчёты о космических одиссеях.
Как всегда, соревнование будет длиться трое суток (72 часа). Старт будет дан в пятницу 18 июня, в полдень по GMT, и, как всегда, будет ещё lightning round (по результатам первых 24 часов).
Судя по короткому описанию на сайте контеста, в этот раз мы, скорее всего, обойдёмся без мучений 2008-го года с LiveCD и опять будем писать свою виртуальную машину для выполнения какого-нибудь предоставленного байт-кода.
Сейчас как раз самое время всё-таки найти команду, или сформировать свою, если до этого не представилось возможности. Ещё вспомнить, что в данном соревновании может значительно помочь любимая система контроля версий и другие полезные штуки.
Может быть, кто-то прямо здесь, в комментах к этому посту и найдёт себе напарников, так что пишите — не стесняйтесь. Я с полной уверенностью могу сказать, что участие в этом соревновании чрезвычайно интересно, а эмоций и фана хватает на много недель!
В прошлых годах участникам приходилось заниматься археолингвистическим программированием (2006), приспосабливать инопланетянина вместе с его НЛО к жизни на Земле (2007), управляя марсоходом, спасаться от злобных марсиан (2008) и летать спутниками в околоземном пространстве (2009).
Если кто-то хочет освежить память — год назад я собрал ссылки на русскоязычные отчёты о космических одиссеях.
Как всегда, соревнование будет длиться трое суток (72 часа). Старт будет дан в пятницу 18 июня, в полдень по GMT, и, как всегда, будет ещё lightning round (по результатам первых 24 часов).
Судя по короткому описанию на сайте контеста, в этот раз мы, скорее всего, обойдёмся без мучений 2008-го года с LiveCD и опять будем писать свою виртуальную машину для выполнения какого-нибудь предоставленного байт-кода.
Сейчас как раз самое время всё-таки найти команду, или сформировать свою, если до этого не представилось возможности. Ещё вспомнить, что в данном соревновании может значительно помочь любимая система контроля версий и другие полезные штуки.
Может быть, кто-то прямо здесь, в комментах к этому посту и найдёт себе напарников, так что пишите — не стесняйтесь. Я с полной уверенностью могу сказать, что участие в этом соревновании чрезвычайно интересно, а эмоций и фана хватает на много недель!
Персональные блоги → Часть 3/3. Компилятор идеальной VM для ICFPC 2009, на Haskell, с популяризаторскими комментариями
Окончание. Предыдущие части: 1 и 2
Что еще осталось? Мы пропустили место, в котором два смежных опкода превращаются в один. Что мы имели? По спецификации проходили следующие операции:
Исследуя бинарные файлы на предмет того, как эти конструкции используются, мы поняли, что они ходят парой Cmp, затем Phi. Наверняка, потому что так скомпилировались организаторами из каких-то их исходных формул ихним каким-то компилятором. Ну, раз так, то мы их немножко склеим в одну операцию:
Что еще осталось? Мы пропустили место, в котором два смежных опкода превращаются в один. Что мы имели? По спецификации проходили следующие операции:
flag = m20 > 0
if (flag) m222 = m3 else m222 = m4
Исследуя бинарные файлы на предмет того, как эти конструкции используются, мы поняли, что они ходят парой Cmp, затем Phi. Наверняка, потому что так скомпилировались организаторами из каких-то их исходных формул ихним каким-то компилятором. Ну, раз так, то мы их немножко склеим в одну операцию:
-- convert 2-op conditional operator to 1-op
removePhi [] = []
removePhi ((Cmpz cond condr1):(Phi addr r1 r2):xs) =
Noop addr : If cond condr1 addr r1 r2 : removePhi xs
removePhi (x:xs) = x:removePhi xs
Персональные блоги → Часть 2/3. Компилятор идеальной VM для ICFPC 2009, на Haskell, с популяризаторскими комментариями
Начало здесь.
Теперь разбираемся как мы будем декодировать весь файл, а не только одну инструкцию.
Теперь разбираемся как мы будем декодировать весь файл, а не только одну инструкцию.
readMyFile = withBinaryFile "bin4.obf" ReadMode $ \h -> do
len <- hFileSize h
buf <- mallocBytes $ fromInteger len
hGetBuf h buf $ fromInteger len
return (len, buf)
Это императивный кусок, потому что с файлами так в основном и работают. withBinaryFile открывает файл, выполняет указанную ей «пользовательскую» функцию, передав ей handle, и закрывает файл, и возвращает то, что вернула ей пользовательская функция. Вот, после знака $ мы описали «пользовательскую» функцию с одним параметром h (от handle). Эта функция получает размер файла, аллоцирует буфер, читает в буфер и возвращает сам буфер и его длину (в байтах). Заметим, что «пользовательская функция» здесь не имеет имени и начинается так:Персональные блоги → Миниотчет об участии в ICFPC 2009
ICFPC это ежегодный конкурс программистов. Здесь мой отчет об участии.
Задание описано сто раз, можно посмотреть здесь habrahabr.ru/blogs/icfpc/63279/
В двух словах:
Вокруг земли крутится несколько спутников, мы управляем одним из них. Надо выполнить задания, написав серию включений двигателей. Задания проверялись на виртуальной машине-симуляторе, программы для которой предоставили организаторы.
Тк я не знал заранее будет ли время участвовать, я оказался без команды, это серьезно повлияло на процесс принятия решений. Было ясно, что одному выиграть очень сложно, поэтому я решил не гнаться за очками, а делать «красивое» решение даже если и будет ясно, что не успеваю. Так же по ходу дела я периодически отвлекался на интересные, но не сильно важные для получения очков вещи, о которых и напишу.
Задание описано сто раз, можно посмотреть здесь habrahabr.ru/blogs/icfpc/63279/
В двух словах:
Вокруг земли крутится несколько спутников, мы управляем одним из них. Надо выполнить задания, написав серию включений двигателей. Задания проверялись на виртуальной машине-симуляторе, программы для которой предоставили организаторы.
Тк я не знал заранее будет ли время участвовать, я оказался без команды, это серьезно повлияло на процесс принятия решений. Было ясно, что одному выиграть очень сложно, поэтому я решил не гнаться за очками, а делать «красивое» решение даже если и будет ясно, что не успеваю. Так же по ходу дела я периодически отвлекался на интересные, но не сильно важные для получения очков вещи, о которых и напишу.
Персональные блоги → ICFP 2008 report: team ryba
Вдохновленные как и многие другие отчетами Adept мы приняли участие в ICFP 2007 и в итоге заняли 4-е место. Впечатления от прошлого года остались самые положительные и в этом году мы собрались снова, правда немного в другом составе. В этот раз мы тоже получили массу удовольствия и с задачей в целом справились, осталось дождаться конференции и выяснить наскольхо хорошо :)

Слева направо: адаптивная сетка, граф путей, траектории

Слева направо: адаптивная сетка, граф путей, траектории
Персональные блоги → ICFPC-2008: первые впечатления
Введение
Есть такой ежегодный программерский конкурс, ICFP Contest — то есть, International Conference on Functional Programming Contest. Конкурс довольно известный, в русскоязычной среде популяризованный отчетами Адепта, так что я очень кратенько изложу его основные принципы.
Конкурс проходит раз в год, игра командная, задания выдаются на сайте конкурса, решения присылаются туда же. Игра идет трое суток, можно прожить их нон-стопом, можно спать и есть, как все нормальные люди. :) Есть так же так называемый lightning round, то есть отдельное призовое место среди решений, присланных в первые сутки игры.
Задания в выгодную сторону отличаются от классических олимпиадных задачек. В 2006м и 2007м годах это были чудесные квесты от программирования, с написанием собственных компиляторов эзотерических языков под эзотерические виртуальные машины; до того, и в этом году, программирование логики поведения объекта в некотором виртуальном мире.
Персональные блоги → ICFPC-2008
Почти сутки остались до начала ICFPC-2008. Что это такое? Это ежегодный трехдневный програмистский конкурс non-stop, приуроченный к международной конференции по функциональному программированию, в течении которого надо пройти в решении поставленной задачи как можно лучше других участников. Смысл конкурса — в выявлении «лучшего языка программирования». Задачи по крайней мере последние два года ставятся интересные и оригинальные, надеюсь и в этом году будет так же.