Как подготовиться к ICFP или Международной конференции по функциональному программированию?
ICFP Programming Competition — международное соревнование по программированию, которое проводится ежегодно в июне или июле с 1998 года. Результаты были представлены на Международной конференции по функциональному программированию. Каждый функциональный программист мечтает попасть в окончательный рейтинг ICFP. Но проблема в том, как подготовиться к ICFP? Ну, не беспокойтесь больше. Мы курировали эту статью только для этого.
В этой статье мы дадим вам полное руководство, которое поможет вам понять все аспекты ICFP, такие как его право на участие, процесс регистрации, подготовка к ICFP и многое другое. Итак, приступим.
Что такое соревнования по программированию ICFP?
- ICFP Programming Competition — это международное соревнование по программированию, которое проводится ежегодно в июне или июле с 1998 года . Результаты были представлены на Международной конференции по функциональному программированию.
- Команды могут быть любого размера и могут использовать любой язык программирования. Плата за вход не взимается. Каждый год за несколько месяцев до конференции ICFP спонсирует веселые и сложные трехдневные соревнования по программированию. Победители конкурса объявляются на ICFP. Во многих случаях существует также круглосуточное молниеносное деление.
- Победители оставляют за собой «право похвастаться», утверждая, что их язык является «лучшим инструментом программирования для дискриминирующих хакеров». Поэтому одна из целей конкурса — показать участникам навыки работы с любимыми языками и инструментами программирования. Предыдущие лауреаты премии использовали Haskell, OCaml, C++, Silk, Java, F# и Rust.
- В конкурсах обычно около 300 работ.
Критерии приемлемости для ICFP:
- Право на участие в соревнованиях по программированию ICFP чрезвычайно гибкое.
- В конкурсе могут принять участие все, кто умеет программировать, в том числе студенты, аспиранты, аспиранты и даже преподаватели могут участвовать в соревнованиях по программированию ICFP.
Правила соревнований по программированию ICFP:
- Это открытый конкурс. В ICFP Programming Contest 2021 может принять участие любой желающий, кроме организатора ICFP Programming Contest 2021.
- Предварительная регистрация или вступительный взнос не требуются.
- Участники могут объединяться в команды любого размера. Спортсмены могут быть членами только одной команды. После начала соревнования команды нельзя разделить, объединить или объединить.
- Команды могут свободно использовать любой язык программирования на любой платформе.
- Команды должны зарегистрироваться во время соревнования, чтобы получить учетные данные для входа. Команды, использующие несколько учетных данных во время соревнований, будут дисквалифицированы.
- Команды, желающие получить призы, должны предоставить исходный код в конце конкурса. Точные детали конкурсной работы будут объявлены в начале конкурса. Команды могут подавать заявки несколько раз в течение соревнования. Ранние заявки могут быть отобраны для участия в конкурсах на подсчет очков в реальном времени, но призы будут присуждаться только за последние заявки в категории Lightning и за весь конкурс.
- Организатор оставляет за собой право отслеживать, записывать и расследовать заявки участников и команд, другие мероприятия, связанные с конкурсом, или их отсутствие. Записи будут использоваться только для целей судейства и уничтожаться по окончании мероприятия, связанного с соревнованием.
- Участников просят не пытаться атаковать сервер соревнования, это испортит удовольствие другим командам и организаторам, которые усердно работали, чтобы доставить вам этот опыт.
- Нарушение этих правил, попытка поставить под угрозу целостность инфраструктуры соревнований, попытка ввести в заблуждение других участников, сговор между командами или попытки нарушить дух соревнования, приведут к дисквалификации участвующей команды.
- Заявители сохраняют за собой все права интеллектуальной собственности на все решения, исходный код, специальные инструменты и сопутствующие материалы («Заявители»), представленные до подачи. В качестве условия участия заявитель предоставляет организатору неисключительную, постоянную, безотзывную, всемирную безвозмездную лицензию на использование, копирование, публикацию, распространение, публичное исполнение и публичный показ представленной работы. И позвольте организатору проверить и оценить запись. Представление для целей конкурса.
- Все решения организатора являются окончательными.
Как принять участие в соревнованиях по программированию ICFP?
- Чтобы принять участие в соревновании по программированию ICFP, вам необходимо зайти на их официальный сайт и зарегистрировать себя и свою команду.
- Участникам необходимо сформировать собственные команды любого размера, которые будут работать вместе с языком программирования. Плата за участие в конкурсе не взимается. Только готовность быть доступным на протяжении всего конкурса для выполнения различных заданий и этапов.
- Общее время турнира составляет 72 часа, но команда, сумевшая выйти на вершину таблицы лидеров через 24 часа, получает специальный приз (приз категории «Молния»).
- Вы можете зарегистрироваться на их официальном сайте и следить за последней информацией.
- Вы также можете подать заявку, чтобы стать студенческим волонтером во время встречи. Приложение для этого есть на их сайте.
- Если вы заинтересованы в исследованиях, они также принимают студенческие исследовательские трактаты, представленные на конференции.
Советы по подготовке к конкурсу ICFP по программированию:
- Вы можете записаться на программу стажировки по программированию и попрактиковаться в вопросах программирования, которые помогут вам лучше понять язык программирования.
- Соревнование также является проверкой того, у кого есть решение первым и у кого лучшее решение.
- Старайтесь обращать внимание как на скорость, так и на точность.
- Узнайте о передовых методах функционального программирования и обязательно применяйте их при подготовке решения.
- См. документацию по языку программирования. Вы можете быть уверены, что соберете много информации о том, что вы можете делать с языком программирования.
- Старайтесь быть последовательным на различных платформах кодирования, таких как CodeChef, codeforces, geeksforgeeks и т. д.
Задачи предыдущего года конкурса ICFP:
ГОД | ПРОБЛЕМА |
---|---|
2018 | Оптимизируйте 3D-печать, выполняемую роем наноботов |
2016 | разворачивать оригами (плоские фигуры из цифровой бумаги), т. е. реконструировать простейшие из возможных плоских моделей по их рисункам складок. |
2014 | Реализовать ИИ для клона Pac-Man. |
2013 | Дана неизвестная функция F(x), которая отображает 64-битные целые числа в 64-битные целые числа, выборочные выходные данные F, чтобы угадать функцию. |
2012 | Копайте землю, чтобы собрать Лямбды, но следите за падающими камнями и другими опасностями! |
2011 | Сыграйте в карточную игру, где карточки представляют собой функции лямбда-исчисления и комбинаторы. |
2010 | Разрабатывайте автомобильные двигатели и топливо и размещайте их на рынке в реальном времени, чтобы заработать очки. |
2009 г. | Пилотируйте орбитальный аппарат, чтобы состыковаться с различными частями космического мусора, и меняйте их орбиты, чтобы достичь других орбитальных тел. |
2008 г. | Ведите марсоход из его текущего местоположения на базу, избегая кратеров и марсиан. |
2007 г. | Переработайте инопланетную ДНК, чтобы преобразовать исходное изображение в целевое. |
2006 г. | Внедрите виртуальную машину с байт-кодом и загрузитесь в устаревшую ОС, чтобы решить дополнительные алгоритмические задачи. |
2005 г. | Напишите ИИ для копов (охотятся на грабителей) и грабителей (грабит банки). Полицейские из нескольких команд собираются вместе, чтобы охотиться на одного грабителя. |
2004 г. | Создайте муравьиную колонию, которая успешно собирает пищу и защищает свое гнездо от других злоумышленников. |
2001 г. | Оптимизировать вариант XHTML. |
2000 г. | Реализовать трассировку лучей. |
1999 г. | Имея конечный автомат, представляющий персонажа интерактивной фантастики в виде s-выражения, напишите оптимизатор, который без потерь сжимает конечный автомат для различных измерений стоимости. |
Часто задаваемые вопросы:
1. Как команды могут быть в курсе обновлений во время конкурса?
Сайт конкурса является официальным источником информации о конкурсе. Заслуживающие внимания обновления будут добавляться в виде сообщений на главную домашнюю страницу и публиковаться в Твиттере @icfpcontest2019.
2. Как команды могут связаться с организаторами конкурса во время конкурса?
Команды могут отправлять запросы на адрес icfpcontest2019@gmail.com или задавать вопросы, отправляя твиты на адрес @icfpcontest2019 (хотя ответ на последний может быть получен с некоторой задержкой).
3. Что команды должны будут представить во время конкурса?
Точная информация о конкурсных работах будет объявлена в начале конкурса.
4. Будут ли команды обязаны предоставлять исходный код во время или после конкурса?
Да. Все команды, желающие получить призы, должны предоставить исходный код в конце конкурса.
5. Система подсчета очков выбирает лучший результат для каждого задания из всех представленных или для последнего отправленного?
Только последнее представление каждой команды учитывается при подсчете наилучшего результата для данной задачи. Обязательно каждый раз предлагайте свои лучшие решения.
Вывод:
- ICFP — отличный способ проверить и улучшить свои навыки кодирования и функционального программирования, соревнуясь с лучшими умами со всего мира. Если вы считаете, что у вас есть все необходимое, чтобы провести желанный конкурс ICFP, начните подготовку прямо сейчас!
- Успех в конкурсе ICFP по программированию определенно повысит ценность вашего резюме при прохождении стажировок в кампусе и за его пределами. Помимо зачета вашего резюме, всегда полезно участвовать в конкурсе, чтобы проверить свои навыки кодирования.
- Это делает вас лучшим разработчиком и продолжает искать проблемы, которые существуют в мире. Ваша единственная задача как инженера — использовать технологии, чтобы помочь человечеству жить лучше.
Статьи по Теме:
- Как подготовиться к Google Code Jam?
- 15 лучших веб-сайтов для соревнований и соревнований по программированию