ICFP Programming Contest
ICFP Programming Contest — международное соревнование по программированию, проводимое ежегодно в июне-июле с 1998 года. Результаты соревнования объявляются на Международной конференции по функциональному программированию.
Команды могут быть любого размера и использовать любой язык программирования (либо несколько языков). Денежные взносы за участие отсутствуют. Участники получают 72 часа на выполнение заданий и отправку своих решений через Интернет. Иногда проводится 24-часовой блиц-турнир.
Победители имеют особое право заявлять о том, что предпочитаемый ими язык является «выбором для разборчивых хакеров». Таким образом, одной из целей соревнования является возможность показать возможности языка программирования и инструментов, используемых участником соревнования. Ранее обладатели главного приза использовали для решения задач такие языки как Haskell, OCaml, C++, Cilk и Java.
Задачи
Год | Организатор | Задача |
---|---|---|
1998 | Массачусетский технологический институт | Написать программу, моделирующую росток, своеобразный вариант игры «Крестики-нолики». Представленные программы были распределены на первые и вторые места. |
1999 | Гарвардский университет | Оптимизация выражений case (в описании задачи говорилось о текстовом квесте, но фактически задача сводилась к оптимизации описания подобной игры). |
2000 | Корнеллский университет | Реализовать путь луча при помощи Postscript-подобного синтаксиса. |
2001 | INRIA Rocquencourt | Оптимизация HTML-подобного языка разметки за счет отказа от излишних пробелов, тегов и т. д. |
2002 | OGI School of Science and Engineering | Реализовать роботов, способных играть друг против друга в игру наподобие Sokoban. |
2003 | Технический университет Чалмерса | Реализовать роботов, способных управлять машиной на максимально возможной скорости на трассах различной сложности. |
2004 | Пенсильванский университет | Колония муравьев. Создать колонию, которая сможет быстрее доставлять еду к муравейнику и будет избегать муравьев других видов. Решением являлась машина состояний. Позже задача была адаптирована в стратегической программистской игре Ant Wars с языком описания конечных автоматов Antomata,[1]. |
2005 | PLT group | Реализовать ботов для игры «Cops & Robbers». Решением являлись две управляющие программы, одна для бота-грабителя, задачей которого было грабить все банки в окрестностях, не попадаясь полиции, другая - для бота-полицейского, который ловит грабителей. |
2006 | Carnegie Mellon University | Реализовать виртуальную машину для запуска операционной системы UMIX, предоставленной организаторами. Затем взломать её используя новые языки программирования с необычным синтаксисом, например, 2D и версию BASIC с римскими числами. Множество мини-загадок с упрощенными версиями или пародиями на предыдущие игры. |
2007 | Utrecht University | Реализовать двухстадийную виртуальную машину, исполняющую строку, похожую на ДНК для получения изображения. Для заданной строки найти префикс, который при добавлении к строке создаст изображение, наиболее похожее на целевое. |
2008 | Portland State University и University of Chicago | Система управления марсоходом, реализующая возврат к базе. Требуется избегать препятствия и врагов. |
2009 | University of Kansas | Управление спутником на орбите Земли: переходы между орбитами и стыковка с другими спутниками. |
2010 | Leipzig University of Applied Science, Германия | Международное производство автомобилей и топлива. |
2011 | Tohoku University, Япония | Программирование компьютера с 256 «ячейками» для победы над оппонентом по количеству слотов, оставшихся в конце матча. Между решениями участников устроен двухуровневый турнир. |
2012 | University of St. Andrews, Шотландия | Реализовать Искусственный интеллект для игры типа Boulder Dash. |
2013 | Microsoft Research, США | Подобрать арифметическо-логическую функцию по примерам параметров и выходных значений. |
2014 | Оксфордский университет | Создать программу для прохождения лабиринта похожего на игру Pac-Man. |
2015 | Galois[2], США | Создать программу для прохождения игры, похожей на тетрис. |
2016 | Университет электро-коммуникаций, Токио | Создать программу для восстановления развертки origami по внешнему виду собранной плоской фигуры. |
2017 | Университет Эдинбурга | Создать программу для игры в аналог Ticket to Ride. |
2018 | Rochester Institute of Technology, США | Создать программу, генерирующую команды для наноботов, которые должны собирать, разбирать или пересобирать заданные 3D объекты, минимизируя затраченную энергию. |
2019 | Yale-NUS College и Национальный университет Сингапура, Сингапур | Создать программу, управляющую роботом-маляром, который должен нанести покрытие на все клетки карты уровня. Цель - покрыть всю поверхность уровня за минимальное время, собирая и применяя различные бустеры, разбросанные по карте. |
2020 | СКБ Контур | Реализовать виртуальную машину по спецификации, полученной от инопланетян, запустить на ней полученный от инопланетян игровой сервер, понять правила игры (двумерная космическая битва на орбите планеты с дискретной физикой на Чебышевских расстояниях, с командами: ускорение, выстрел, деление и самодетонация), написать бота для участия в чемпионате по этой игре. |
Победители
Наградой является небольшая денежная сумма, которая позволяет победителю компенсировать затраты на посещение конференции ICFP. Жюри присуждает несколько наград:
- Первый приз
- [Язык 1] как средство программирования для проницательных хакеров.
- Второй приз
- [Язык 2] как удобное средство для разработки множества приложений.
- Третий приз
- [Язык 3] тоже не слишком запущенный.
- Победитель дивизиона "lightning"
- [Язык L] хорошо подходит для быстрого прототипирования.
- Приз жюри
- [Команда X] - очень крутая группа хакеров.
Если победители использовали несколько языков, то они номинируют один или два языка из использованных.
Год | Первый приз | Второй приз | Третий приз | "Lightning" |
---|---|---|---|---|
1998 | Cilk | OCaml | ||
1999 | OCaml | Haskell | - | |
2000 | OCaml | OCaml | ||
2001 | Haskell | Dylan | ||
2002 | OCaml | C | - | |
2003 | C++ | C++ | OCaml | |
2004 | Haskell | Haskell и C++ | Java и C++ | |
2005 | Haskell | Dylan | Haskell | |
2006 | 2D[3] | D | Язык ассемблера | |
2007 | C++ | Perl | без победителя | |
2008 | Java | ML[4] | ||
2009 | C++ | Java | ML[5] | |
2010 | C++, Haskell, Python | Sage | ||
2011[6] | F# | Shell и C++ | ||
2012 | C++ | |||
2013[7] | Java, C#, C++, PHP, Ruby and Haskell | C#, C++ | ||
2014 | Haskell | |||
2015 | C++, Java, C#, PHP, Ruby and Haskell | |||
2016[8] | Java, C++, C#, PHP, Haskell | C++, Ruby, Python, Haskell, Java, JavaScript | OCaml | |
2017[9] | C++ | C++ | OCaml | |
2018[10] | Rust | C++, Python, Ruby, JavaScript, Bash и SQL | OCaml | |
2019[11] | Rust | C++ | C++ и Haskell | |
2020[12] | Python | C++ (первый победитель), Rust (второй победитель) | Haskell |
См. также
Примечания
- Antomata — The Language of Ant Wars Архивировано 29 сентября 2007 года.
- ICFP Programming Contest set to take place this weekend - Galois, Inc. (англ.). Galois, Inc.. Дата обращения: 26 ноября 2015.
- 2D - искусственный язык придуманный для конкурса 2006 года. Победители использовали C++, Haskell, Python, Bash, 2D и неназванный закрытый язык, используемый в корпорации Google Inc (ныне - Alphabet).
- http://web.cecs.pdx.edu/~sheard/2008IcfpContest/ - accessed Semtember 23, 2009
- http://www.vimeo.com/6613815 - accessed September 23, 2009
- ICFP Programming Contest 2012 (англ.) (недоступная ссылка). icfpcontest.org. Дата обращения: 13 сентября 2012. Архивировано 21 апреля 2012 года.
- ICFP Programming Contest 2013 (недоступная ссылка). Дата обращения: 16 октября 2013. Архивировано 16 октября 2013 года.
- ICFP Programming Contest 2016
- ICFP Programming Contest 2017
- ICFP Programming Contest 2018
- Final Results (англ.). ICFP Programming Contest 2019 (20 августа 2019). Дата обращения: 15 июля 2020.
- ICFP Programming Contest Awards and Reports (англ.) (26 августа 2020). Дата обращения: 29 мая 2021.
Постоянные команды-участницы
Ссылки
- Most current contest site
- 1998 contest site
- Mirror of 1998 contest task
- (Partial) mirror of the 1999 contest site (недоступная ссылка)
- 2000 contest site
- 2001 contest site
- 2002 contest site
- 2003 contest site
- 2004 contest site
- 2005 contest site
- 2006 contest site
- 2007 contest site
- 2008 contest site
- 2009 contest site
- 2010 contest site Архивная копия от 20 апреля 2012 на Wayback Machine
- 2011 contest site
- 2012 contest site
- 2013 contest site Архивная копия от 16 октября 2013 на Wayback Machine
- 2014 contest site
- 2015 contest site
- 2016 contest site
- 2017 contest site
- 2018 contest site
- 2019 contest site
- 2020 contest site
- ICFP Programming Contest History (Ward Cunningham's Wiki)
- Programming geeks fight to the finish (CNET)
- Fiction-filled computer code mystery peppered with 'ancient' puzzles (Pittsburgh Post-Gazette)
- Video of 2006 contest results
- Video of 2007 contest results
- Video of 2008 contest results
- 2007 contest written report
Ant War game
- https://web.archive.org/web/20110723014332/http://www.ant-wars.net/ - Homepage
- http://sourceforge.net/projects/formicidae/ - The project at sourceforge.net
- https://web.archive.org/web/20071125152658/http://alliance.seas.upenn.edu/~plclub/cgi-bin/contest/ The official page for the task at the 2004 ICFP Programming Contest