Необходимо проверить качество перевода, исправить содержательные и стилистические ошибки. |
ICFP Programming Contest — международное соревнование по программированию, проводимое ежегодно в июне-июле с 1998 года. Результаты соревнования объявляются на Международной конференции по функциональному программированию.
Команды могут быть любого размера и использовать любой язык программирования (либо несколько языков). Денежные взносы за участие отсутствуют. Участники получают 72 часа на выполнение заданий и отправку своих решений через Интернет. Иногда проводится 24-часовой блиц-турнир.
Победители имеют особое право заявлять о том, что предпочитаемый ими язык является «выбором для разборчивых хакеров». Таким образом, одной из целей соревнования является возможность показать возможности языка программирования и инструментов, используемых участником соревнования. Ранее обладатели главного приза использовали для решения задач такие языки как Haskell, OCaml, C++, Cilk и Java.
В Конкурсе по программированию ICFP 2024 может принять участие любой желающий, кроме организаторов Конкурса ICFP 2024.
Никакой предварительной регистрации или вступительного взноса не требуется.
Участники могут объединяться в команды любого размера. Участник может быть членом только одной команды. Команды не могут разделяться, объединяться или сотрудничать после начала конкурса.
Команды могут свободно использовать любые языки программирования на любых платформах.
Для получения учетных данных команды должны зарегистрироваться незадолго до или во время соревнований. Команды, использующие более одного набора учетных данных во время конкурса, будут дисквалифицированы.
Команды, желающие претендовать на призы, должны предоставить исходный код в конце конкурса. Точная информация о конкурсных работах будет объявлена в начале конкурса. Команды могут подавать заявки несколько раз в ходе конкурса, и их лучшие результаты будут показаны на табло в реальном времени.
Чтобы конечный результат был скрыт до конференции ICFP, табло (верхняя часть) будет заморожено ближе к концу раунда Lightnight и ближе к концу всего соревнования. Это правило будет обновлено ближе к дате конкурса.
Организаторы сохраняют за собой право отслеживать, фиксировать и расследовать заявки, другие действия, связанные с конкурсом, или их отсутствие со стороны участников и команд. Записи используются исключительно для судейской цели и удаляются после завершения соревнований, связанных с соревнованиями.
Участников просят не пытаться атаковать сервер конкурса. Это испортит удовольствие другим командам и организаторам, которые усердно работали, чтобы подарить вам этот опыт. Нарушение этих правил, попытки нарушить целостность инфраструктуры соревнования, попытки помешать другим участникам, сговор между командами или попытки противоречить духу соревнования приведут к дисквалификации участвующих участников и/или команд.
Участники сохраняют за собой право собственности на все права интеллектуальной собственности на любые представленные решения, исходный код, специальные инструменты и сопутствующие материалы («Материалы»), которые были у участников до подачи. В качестве условия подачи конкурсанты предоставляют Организаторам неисключительную, бессрочную, безотзывную, всемирную, безвозмездную лицензию на использование, воспроизведение, публикацию, распространение, публичное исполнение и публичную демонстрацию Материалов, что позволяет Организаторам тестировать и оценивать Представленные материалы для участия в конкурсе.
Все решения Организаторов являются окончательными.
Задачи
правитьГод | Организатор | Задача |
---|---|---|
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. Архивировано 26 ноября 2015 года.
- ↑ 2D - искусственный язык придуманный для конкурса 2006 года. Победители использовали C++, Haskell, Python, Bash, 2D и неназванный закрытый язык, используемый в корпорации Google Inc (ныне - Alphabet).
- ↑ http://web.cecs.pdx.edu/~sheard/2008IcfpContest/ Архивная копия от 8 апреля 2011 на Wayback Machine - accessed Semtember 23, 2009
- ↑ http://www.vimeo.com/6613815 Архивная копия от 9 ноября 2012 на Wayback Machine - 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 . Дата обращения: 29 мая 2021. Архивировано 5 марта 2021 года.
- ↑ ICFP Programming Contest 2018 . Дата обращения: 16 мая 2020. Архивировано 31 октября 2020 года.
- ↑ Final Results (англ.). ICFP Programming Contest 2019 (20 августа 2019). Дата обращения: 15 июля 2020. Архивировано 7 ноября 2020 года.
- ↑ ICFP Programming Contest Awards and Reports (англ.) (26 августа 2020). Дата обращения: 29 мая 2021. Архивировано 2 июня 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
- ICFP contest 2024
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