Конкурс ICFP по программированию
ICFP Programming Contest — международное соревнование по программированию, которое проводится ежегодно примерно в июне или июле с 1998 года, результаты которого объявляются на Международной конференции по функциональному программированию .
Команды могут быть любого размера и могут использоваться любые языки программирования. Плата за вход также не взимается. У участников есть 72 часа, чтобы заполнить и отправить свою заявку через Интернет. Часто также существует круглосуточное молниеносное подразделение.
Победители оставляют за собой «право хвастаться», утверждая, что их язык является «предпочтительным инструментом программирования для разборчивых хакеров». Таким образом, одна из целей конкурса — продемонстрировать возможности любимых языков программирования и инструментов участников. Предыдущие победители первых премий использовали Haskell , OCaml , C++ , Cilk , Java , F# и Rust .
На конкурсы обычно подается около 300 заявок. [1] [2]
Прошлые задачи
[ редактировать ]Год | Организатор | Описание |
---|---|---|
1998 | Монреальский университет и Массачусетский технологический институт | Напишите программу, которая воспроизводит pousse — странный вариант игры в крестики-нолики. Программы-конкурсанты были представлены на турнире для определения программы, занявшей первое и второе место. |
1999 | Гарвардский университет | Оптимизация кейсов по размеру (в задании конкурса говорилось о текстовых приключенческих играх , но на самом деле задача заключалась в оптимизации по размеру описания такой игры). |
2000 | Корнелльский университет | Реализуйте трассировку лучей, используя синтаксис, подобный Postscript. |
2001 | ИНРИА Рокенкур | Оптимизируйте размер HTML-подобного языка разметки, удалив ненужные пробелы, теги и т. д. |
2002 | Школа науки и техники OGI | Реализуйте роботов, играющих Сокобану друг против друга в игру, подобную . |
2003 | Университет Чалмерса | Реализуйте роботов, управляющих автомобилем как можно быстрее по разным гоночным трассам. |
2004 | Пенсильванский университет | Создайте колонию муравьев, которая будет приносить больше всего частиц пищи обратно в свой муравейник, одновременно отгоняя муравьев других видов. Запись конкурса будет выводить машинное описание муравья: в принципе, записи можно было написать вручную. Позже задача была адаптирована в Ant Wars — стратегической и программной игре , где каждый участник представляет собой разновидность муравья . Затем участники на языке, называемом Антомата, [3] запрограммировать конечный автомат , который будет функционировать как мозг каждого муравья. муравья Затем мозг управляет муравьем, чтобы он находил и собирал еду, чтобы принести ее в домашний муравейник , отбиваться от нападавших или оставлять следы из феромонов. |
2005 | ПЛТ Группа | Реализуйте «ботов» для игры «Полицейские и грабители»: участники должны написать программу управления, которая проведет робота-грабителя через тихий городской район с миссией ограбить каждый банк, не будучи пойманным, а также программу управления для полицейского. Бот, призванный остановить это. |
2006 | Университет Карнеги-Меллон | Реализуйте виртуальную машину под управлением операционной системы (называемой UMIX ), предоставленной судьями, и взломайте ее, используя новые языки программирования с нетрадиционным синтаксисом и семантикой, такие как 2D и версию BASIC с использованием римских цифр. Многие головоломки представляли собой крошечные версии или пародии на предыдущие конкурсы. |
2007 | Утрехтский университет | Реализуйте двухэтапную виртуальную машину, которая выполняет строку, подобную ДНК, для создания изображения. Затем, учитывая входную строку для этой машины, найдите префикс, который при добавлении к этой строке дает изображение, максимально близкое к заданному целевому изображению. |
2008 | Портлендский государственный университет и Чикагский университет | Создайте систему управления марсоходом, которая направит его к домашней базе, избегая при этом препятствий и врагов. |
2009 | Университет Канзаса | Управляйте спутником, чтобы он перемещался между указанными орбитами и встречался с другими спутниками. |
2010 | Лейпцигский университет прикладных наук , Германия | Международное производство автомобилей и топлива. |
2011 | Университет Тохоку , Япония | Запрограммируйте компьютер с 256 «слотами», чтобы он превзошел своего противника по количеству слотов, оставшихся к концу матча. Представленные материалы включают в себя исполняемые файлы, которые участвуют в двухэтапном турнире. |
2012 | Университет Сент-Эндрюс , Шотландия | Запрограммируйте ИИ для игры, похожей на Boulder Dash . |
2013 | Microsoft Исследования | Угадайте реализацию функции черного ящика, реализованную на простом функциональном языке, путем запроса веб-сервиса. |
2014 | Оксфордский университет и компания Well-Typed LLP | Напишите программы искусственного интеллекта для игры, похожей на pacman, в машинных инструкциях SECD для pacman и 8-битных машинных инструкциях по сборке для четырех призраков. |
2015 | Галуа | Напишите ИИ для игры, похожей на тетрис , на поле шестиугольной сетки, которая встраивает секретные фразы в последовательность ходов. |
2016 | Университет электросвязи | Напишите ИИ для решения абстрактного оригами . |
2017 | Эдинбургский университет | Напишите ИИ для игры, в которой игроки по очереди забирают части маршрута на карте, и побеждает тот, у кого лучшее покрытие. К основному режиму игры также есть три расширения, любое количество которых можно включить на карте. |
2018 | Рочестерский технологический институт | Создавайте следы наноботов для создания, разрушения и реконструкции целевых 3D-объектов, минимизируя при этом используемую энергию. |
2019 | Йельский колледж NUS и Национальный университет Сингапура | Рабочие-обертки против Bit Rot. [4] |
2020 | СКБ Контур | Создайте виртуальную машину по спецификации инопланетянина , запустите предоставленный инопланетянами игровой сервер на этой виртуальной машине, исследуйте игру (2D космическая битва на орбите планеты с расстоянием Чебышева, с командами ускорения, стрельбы, разделения и взрыва), реконструируйте игровой протокол и создать бота для этой игры. |
2021 | Алекс Ланг и Джаспер Ван дер Югт | Управляйте фигурой, похожей на механическую связь, чтобы она прошла через дыру в стене . |
2022 | Альперен Келес | Преобразуйте предварительно заполненный холст в картину. |
Призы
[ редактировать ]Призы имеют скромную денежную стоимость и в первую очередь направлены на то, чтобы помочь победителям присутствовать на конференции, где вручаются призы, а судьи делают следующие заявления:
- Первый приз
- [Язык 1] — это инструмент программирования, который предпочитают разборчивые хакеры.
- Второй приз
- [Язык 2] — прекрасный инструмент программирования для многих приложений.
- Третий приз
- [Язык 3] тоже не так уж и плох.
- Победитель молниеносного дивизиона
- [Язык L] очень подходит для быстрого прототипирования.
- Приз судей
- [Команда X] — чрезвычайно крутая группа хакеров.
Если работа-победитель включает несколько языков, победителям предлагается выбрать один или два языка.Языки, указанные в заявлениях судей:
См. также
[ редактировать ]Ссылки и примечания
[ редактировать ]- ^ «Таблица соревнований по программированию ICFP» . Проверено 23 сентября 2012 г.
- ^ https://alliance.seas.upenn.edu/~plclub/cgi-bin/contest/results.php
- ^ «Антомата — язык муравьиных войн» . Архивировано из оригинала 29 сентября 2007 г. Проверено 25 ноября 2007 г.
- ^ «Конкурс начинается» . Конкурс ICFP по программированию 2019 . 21 июня 2019 г. Проверено 15 июля 2020 г.
- ^ Окончательные результаты конкурса по программированию ICFP'99.
- ^ Перейти обратно: а б Конкурсы 1999 и 2002 годов имели молниеносный дивизион, но без отдельного приза. Победители этого дивизиона были награждены призами судей.
- ^ Третий ежегодный конкурс программирования ICFP
- ^ Четвертое соревнование по программированию ICFP
- ^ Седьмое ежегодное соревнование по программированию ICFP
- ^ Восьмой ежегодный конкурс программирования ICFP
- ^ 2D — игрушечный язык, изобретенный для конкурса 2006 года.Команда-победитель использовала C++ , Haskell , Python , Bash и 2D.
- ↑ В конкурсе 2007 года было молниеносное разделение, но, поскольку по прошествии 24 часов не было явного лидера, судьи решили не выбирать победителя.
- ^ Результаты конкурса по программированию ICFP 2008
- ^ http://www.vimeo.com/6613815 - по состоянию на 23 сентября 2009 г.
- ^ Соревнования по программированию ICFP 2010 (видео)
- ^ Конкурс программирования ICFP 2011 г.
- ^ Конкурс программирования ICFP 2012
- ^ «Конкурс ICFP по программированию 2013» . Архивировано из оригинала 16 октября 2013 г. Проверено 15 августа 2013 г.
- ^ Конкурс программирования ICFP 2014 г.
- ^ Конкурс программирования ICFP 2015
- ^ Конкурс программирования ICFP 2016
- ^ Конкурс программирования ICFP 2017
- ^ Конкурс программирования ICFP 2018
- ^ «Окончательные результаты» . Конкурс ICFP по программированию 2019 . 20 августа 2019 г. Проверено 15 июля 2020 г.
- ^ «Награды и отчеты конкурса программирования ICFP» . 26 августа 2020 г. Архивировано из оригинала 21 декабря 2021 г. Проверено 29 мая 2021 г.
- ^ Конкурс по программированию ICFP 2021
- ^ Конкурс по программированию ICFP 2022