Скоро ICFPC 2015

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


    Посвящается хабровчанам, которым иногда хочется отдохнуть от промышленного кодинга и найти чего-то такого безумно[ круто]го для души. Ежегодный ICFP Contest начнётся меньше чем через неделю!



    Что это


    Есть такая International Conference on Functional Programming, раз в год проходящая в разных местах земного шара. К ней приурочен трёхдневный командный контест-хакафон, призёры которого помимо уважухи и денежных призов получают бесплатные билеты. И вот тут начинается самое интересное.
    Несмотря на название и тематику конференции, задачи не заточены под какие-то языки и технологии, и писать можно совершенно на чём угодно; а в призовых местах, например, стабильно оказывается C++. Как правило, эталонного решения у них нет, и подходить можно с полной свободой творчества. Сроку отводится трое суток (пятница по понедельник в зависимости от часового пояса участников), в течение которых можно отсылать всякие промежуточные результаты и получать за это очки, и ещё есть lightning division с отдельной таблицей победителей по итогам первых суток. То есть демократия полная – работать можно где угодно, как угодно, каким угодно составом без регистрации и SMS. Ну и наконец, главная фича – задания в контесте упоительно креативные и очень проработанные, и полны тонкого юмора, пасхалок и отсылок. Из наиболее ярких примеров:
    • раскодировать двухмегабайтную виртуальную машину, в которой упихана тонна паззлов вроде юникс-консольки, математических головоломок и текстового квеста (2006);
    • помочь пришельцу адаптироваться к нашей планете, распотрошив и дополнив его самомодифицирующуюся ДНК, которая умеет рисовать упоротые картинки (2007);
    • научиться играть и выигрывать у других участников в гибрид Magic: the Gathering и лямбда-исчисления (2011);
    • написать ботов для альтернативного пакмана, крутящегося на аркадном автомате из лисп-машины и восьмибитного микроконтроллера (2014).

    Отличный способ приобщиться и вдохновиться — глянуть отчёты вышеупомянутого Дмитрия Астапова, которые можно читать как технотриллер. Рекомендую начать с 2006 года, который ни один конкурс пока не переплюнул.
    Для участия необходимы навыки командной разработки и возможность хотя бы частично выпать из жизни в уикенд. Очень желателен кругозор в области computer science. Особо приветствуются знатоки и умельцы ИИ, виртуальных машин и компиляторов, эти темы проскакивают почти в каждом году. Хотя, конечно, самое важное – общая соображалка.

    Анонс


    Теперь немного о том, что же будет в этом году.
    Конференция проводится с 31 августа по 2 сентября в Ванкувере, а контест уже совсем скоро – с 7 по 10 августа. Судя по традиционно немногословному анонсу, нас ждёт что-то на криптографическую тематику с аллюзиями на национальную безопасность и творчество Лавкрафта. Имеющиеся крупицы инфы проанализировал постоянный участник ICFPC Turtle//Bazon.

    До встречи в турнирной таблице!
    • +21
    • 4,5k
    • 9
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 9

      0
      А есть статистика среднего числа балов в зависимости от языка?
        0
        Было бы круто, если кто-то такую статистику собрал.
        По ощущениям зависимости почти нет. Ощущения можно приобрести самостоятельно тут: en.wikipedia.org/wiki/ICFP_Programming_Contest#Prizes
          0
          Там только победители. Понятно, что вероятность победить для языка зависит не только от его свойств, но и от количества учасников, его использующих. Поэтому интересно общее распределение оценок для каждого языка.
            0
            Доступной статистики действительно нет. Иногда можно раздобыть сохранённую кем-нибудь таблицу очков (например, за прошлый год вот), если вы возьмётесь её обработать, будет здорово.
              +1
              Посчитал за прошлый год:
              image
              Источник — официальный гитхабик (https://github.com/icfpcontest2014/icfpcontest2014.github.io/blob/master/results.html)

              Если команда указывала несколько языков, то учитывался только первый. Показаны только языки, которые выбрали хотя бы 5 команд.
                0
                Моя вольная интерпретация:

                1. C++ и C# выбирают, видимо, те, кто на них программирует по работе или в результате подготовки к классическим олимпиадам (С++). Как следствие неплохие средние результаты.

                2. Haskell, наверняка, чаще, чем C++ и C#, выбирают по принципу «Ну хоть тут попробуем этот диковинный язык». Поэтому в среднем результаты хуже. (Впрочем это не помешало Хаскелю заработать первое место :)
                  0
                  У нас в команде выбор Java обусловлен в основном тем, что один человек на ней очень быстро педалит, а остальные неплохо разбираются, чтобы исправлять/дополнять. Так что средний icfpc выглядит обычно так — Sanny в течение суток набрасывает 100-200к исходников, а потом все дружно оставшиеся двое суток правим баги…
                    +1
                    Про «правим баги» у нас есть правило: все что написано — не работает!
                    Поэтому все ключевые системы мы сразу обкладываем тестами или тестируем вручную. Это быстрее, чем искать баги после внедрения неработающей штуки.

                    В этот раз у нас под тестами были: гексагональная арифметика, логика тетриса, логика поиска пути для фигурки, логика манипуляции с фразами силы, input/output, ну и конечно финальные тесты на количество набираемых баллов.
                      0
                      К стыду своему должен сказать, что мы потратили почти 6 часов на отладку гексагональной арифметики, пока не плюнули и не сделали стратегически важный выбор в пользу системы координат с наклонной осью Y, вместо дебильной вертикально-изломанной. Все внутренние расчеты стали простыми и красивыми, а перевод делался разово.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое