Соревнование по программированию ICFP - ICFP Programming Contest

Соревнования по программированию ICFP - это международные соревнования по программированию, которые проводятся ежегодно в июне или июле с 1998 года, а результаты объявляются на Международной конференции по функциональному программированию .

Команды могут быть любого размера и могут использоваться любые языки программирования. Также нет вступительного взноса. У участников есть 72 часа, чтобы заполнить и подать заявку через Интернет. Часто бывает и 24-часовое деление молний.

Победители оставляют за собой «право хвастаться», заявляя, что их язык - «предпочтительный инструмент программирования для распознавания хакеров». Таким образом, одна из целей конкурса - продемонстрировать возможности любимых участниками языков программирования и инструментов. Предыдущие обладатели первого приза использовали Haskell , OCaml , C ++ , Cilk , Java , F # и Rust .

На конкурсы обычно подается около 300 работ.

Прошлые задачи

Год Организатор Описание
1998 г. Университет Монреаля и Массачусетский технологический институт Напишите программу, которая играет пусс , странный вариант крестиков-ноликов. Конкурсные программы были введены в турнир для определения программы, занявшей первое и второе места.
1999 г. Гарвардский университет Операторы case -optimize case (в конкурсной задаче говорилось о текстовых приключенческих играх , но на самом деле задача заключалась в оптимизации описания такой игры по размеру).
2000 г. Cornell University Реализуйте трассировщик лучей, используя синтаксис, подобный Postscript.
2001 г. INRIA Rocquencourt Оптимизируйте размер HTML-подобного языка разметки, удалив ненужные пробелы, теги и т. Д.
2002 г. Школа науки и инженерии OGI Реализуйте роботов, играющих в сокобанскую игру друг против друга.
2003 г. Университет Чалмерса Реализуйте роботов, управляющих автомобилем как можно быстрее по разным гоночным трассам.
2004 г. Пенсильванский университет Создайте колонию муравьев, которая будет приносить наибольшее количество частиц пищи обратно в муравейник, одновременно отбиваясь от муравьев другого вида. Конкурсная запись выводила бы описание муравья на конечном автомате: в принципе, записи могли быть написаны от руки. Позже задача была адаптирована в Ant Wars, игре- стратегии и программировании, где каждый участник представляет собой разновидность муравьев . Затем участник на языке под названием Antomata программирует конечный автомат, который функционирует как мозг каждого муравья. Затем мозг муравья управляет муравьем, чтобы найти и собрать пищу, чтобы принести на домашний муравейник , чтобы отбиваться от нападающих или оставлять следы из феромонов.
2005 г. Группа PLT Внедрите «ботов» для игры «Полицейские и грабители»: участники должны написать программу управления, которая проведет робота-грабителя через тихий городской район с миссией ограбить каждый банк, не попав в ловушку, и программу управления для полицейского. Бот, призванный остановить это.
2006 г. Университет Карнеги Меллон Реализуйте виртуальную машину, на которой работает операционная система (называемая UMIX ), предоставленная судьями, и взломайте ее, используя новые языки программирования с нетрадиционным синтаксисом и семантикой, такие как 2D и версия BASIC с римскими цифрами. Многие головоломки были миниатюрными версиями или пародиями на предыдущие конкурсы.
2007 г. Утрехтский университет Реализуйте двухэтапную виртуальную машину, которая выполняет строку, похожую на ДНК, для создания изображения. Затем, учитывая входную строку для этого компьютера, найдите префикс, который при добавлении к этой строке дает изображение, максимально приближенное к заданному целевому изображению.
2008 г. Государственный университет Портленда и Чикагский университет Обеспечьте систему управления марсоходом, которая будет вести его к домашней базе, избегая препятствий и врагов.
2009 г. Канзасский университет Управляйте спутником, чтобы перемещаться между заданными орбитами и встречаться с другими спутниками.
2010 г. Лейпцигский университет прикладных наук , Германия Международное производство автомобилей и топлива.
2011 г. Университет Тохоку , Япония Запрограммируйте компьютер с 256 «слотами», чтобы пережить своего противника с точки зрения количества слотов, оставшихся в конце матча. Представленные материалы включают исполняемые файлы, которые участвуют в двухэтапном турнире.
2012 г. Университет Сент-Эндрюс , Шотландия Запрограммируйте ИИ для игры, похожей на Boulder Dash .
2013 Microsoft Research Угадайте реализацию функции черного ящика, реализованную на простом функциональном языке посредством запроса веб-службы.
2014 г. Оксфордский университет и Well-Typed LLP Напишите программы ИИ для pacman-подобной игры в машинных инструкциях SECD для pacman и 8-битных машинных инструкциях по сборке для четырех призраков.
2015 г. Галуа Напишите ИИ для игры в стиле тетрис на поле с шестиугольной сеткой, которое включает секретные фразы в последовательность ходов.
2016 г. Университет электросвязи Напишите ИИ, чтобы разгадывать абстрактное оригами .
2017 г. Эдинбургский университет Напишите ИИ для игры, в которой игроки по очереди запрашивают части маршрута на карте, и побеждает тот, у кого лучшее покрытие. Также есть три расширения основного игрового режима, любое количество из которых можно включить на карте.
2018 г. Рочестерский технологический институт Создавайте следы наноботов для создания, разрушения и реконструкции целевых 3D-объектов с минимальным потреблением энергии.
2019 г. Йельский колледж и Национальный университет Сингапура Рабочие-обертки против Bit Rot.
2020 г. СКБ Контур Создайте виртуальную машину по спецификации пришельцев , запустите игровой сервер, предоставленный пришельцем, на этой виртуальной машине , исследуйте игру (2D космическое сражение на орбите планеты с расстоянием Чебышева, с командами ускорения, стрельбы, разделения и взрыва), перепроектируйте игровой протокол и создать бота, чтобы играть в эту игру.

Призы

Призы имеют скромную денежную ценность и в первую очередь направлены на то, чтобы помочь победителям посетить конференцию, на которой вручаются призы и судьи делают следующие заявления:

Первый приз
[Language 1] - инструмент программирования, который предпочитают распознавать хакеров.
Второй приз
[Language 2] - прекрасный инструмент программирования для многих приложений.
Третий приз
[Language 3] тоже не так уж и плохо.
Победитель молниеносного дивизиона
[Язык L] очень подходит для быстрого прототипирования.
Приз судей
[Команда X] - очень крутая группа хакеров.

Если победившая работа включает несколько языков, победителей просят указать один или два. Языки, указанные в заявлениях судей, были:

Год Первый приз Вторая премия Третья премия Молния
1998 г. Силк OCaml
1999 г. OCaml Haskell
2000 г. OCaml OCaml
2001 г. Haskell Дилан
2002 г. OCaml C
2003 г. C ++ C ++ OCaml
2004 г. Haskell Haskell и C ++ Java и C ++
2005 г. Haskell Дилан Haskell
2006 г. 2D D сборка
2007 г. C ++ Perl
2008 г. Джава ML
2009 г. C ++ Джава ML
2010 г. C ++ , Haskell , Python SageMath
2011 г. F # Оболочка и C ++
2012 г. C ++ OCaml Джава
2013 Java , C # , C ++ , PHP , Ruby и Haskell C ++ и Python C # , C ++ , bash , awk , sed и Excel C ++
2014 г. Haskell C ++ Perl OCaml
2015 г. C ++ , Java , C # , PHP , Ruby и Haskell C ++ , Python , JavaScript C ++ C ++
2016 г. Java , C ++ , C # , PHP , Haskell C ++ , Ruby , Python , Haskell , Java , JavaScript OCaml
2017 г. C ++ C ++ OCaml
2018 г. Ржавчина C ++ , Python , Ruby , JavaScript , bash и SQL OCaml
2019 г. Ржавчина C ++ C ++ и Haskell
2020 г. Python C ++ (первый победитель), Rust (второй победитель) Haskell
2021 г. C ++ , Rust Ржавчина Rust , TypeScript и Go Rust , TypeScript и Go

Смотрите также

Ссылки и примечания

  1. ^ "Табло соревнований по программированию ICFP" . Проверено 23 сентября 2012 года .
  2. ^ https://alliance.seas.upenn.edu/~plclub/cgi-bin/contest/results.php
  3. ^ "Antomata - язык муравьиных войн" . Архивировано из оригинала на 2007-09-29 . Проверено 25 ноября 2007 .
  4. ^ «Конкурс начинается» . Соревнование по программированию ICFP 2019 . 2019-06-21 . Проверено 15 июля 2020 .
  5. ^ Конечные результаты ICFP'99 олимпиады по программированию
  6. ^ a b Соревнования 1999 и 2002 годов проходили в молниеносном дивизионе, но без отдельного приза. Победители этого дивизиона были награждены жюри.
  7. ^ Третий ежегодный конкурс программирования ICFP
  8. ^ Четвертый конкурс программирования ICFP
  9. ^ Седьмое соревнование по программированию Antual ICFP
  10. ^ Восьмой ежегодный конкурс программирования ICFP
  11. ^ 2D был игрушечным языком, изобретенным для конкурса 2006 года. Команда-победитель использовала C ++ , Haskell , Python , Bash и 2D.
  12. ^ В конкурсе 2007 года было молниеносное деление, но, поскольку через 24 часа не было явного лидера, судьи решили не выбирать победителя.
  13. ^ Результаты соревнований по программированию ICFP 2008
  14. ^ http://www.vimeo.com/6613815 - по состоянию на 23 сентября 2009 г.
  15. ^ МКВП 2010 программированию (видео)
  16. ^ Соревнование по программированию ICFP 2011
  17. ^ Соревнование по программированию ICFP 2012
  18. ^ Соревнование по программированию ICFP 2013
  19. ^ Соревнование по программированию ICFP 2014
  20. ^ Соревнование по программированию ICFP 2015
  21. ^ Соревнование по программированию ICFP 2016
  22. ^ Соревнование по программированию ICFP 2017
  23. ^ Соревнование по программированию ICFP 2018
  24. ^ «Окончательные результаты» . Соревнование по программированию ICFP 2019 . 2019-08-20 . Проверено 15 июля 2020 .
  25. ^ "Награды и отчеты конкурса программирования ICFP" . 2020-08-26 . Проверено 29 мая 2021 .
  26. ^ Соревнование по программированию ICFP 2021

Многолетние команды

внешние ссылки

Игра Ant War