CodeCup

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

CodeCup — щорічне міжнароджне змагання в галузі штучного інтелекту настільних ігор. Проводиться Нідерландською олімпіадою з інформатики[1] з 2003 року.

Об'єктом змагання є здатність створювати розумні алгоритми, які за короткий час обирають якомога кращі ходи у грі, яка не має відомого розв'язку.[2] Учасники змагання часто використовують алгоритми альфа-бета відсічення[3] та пошук по дереву методом Монте-Карло (MCTS).[1][4]

Історія[ред. | ред. код]

Змагання між програмами школярів, що брали участь у Нідерландській олімпіаді з інформатики, розпочалися у 1996 році. Тоді учасникам було запропоновано створити програму, що грає в пасьянс. У 1997 році було вперше проведено турнір у настільній грі. Учасники надсилали свої програми на дискетах. У 2003 році змагання стало відкритим для усіх охочих.[2]

Опис змагання[ред. | ред. код]

У цьому змаганні програми учасників грають турнір у настільну гру проти програм інших учасників. Для турніру щороку обирається цілковито нова гра. Організатори публікують правила гри у вересні чи серпні, а остаточний турнір проводиться у січні наступного року. Якщо у змаганні бере участь багато учасників, турнір проводиться у два тури: перший тур проводиться за швейцарською системою, а другий — за круговою. Перший тур дозволяє швидко відсіяти найслабші програми.

Для участі у змаганні потрібно зареєструватися та завантажити код своєї програми на сайт CodeCup.nl. Програма буде оцінена на предмет технічної відповідповідності, а також зіграє дві гри з тестовими суперниками. Якщо програма не зробить помилок (хибних ходів), то її буде допущено до участі у змаганні. Що два тижні перед фінальним турніром відбуваються тестові турніри, які дозволяють учасникам оцінити порівняну силу своїх програм, переглянути зіграні партії та удосконалити своїх гравців. Також можливо проводити тестовий турнір на власному комп'ютері завдяки програмі Caia, яка працює на ОС Linux (хоча також може використовуватися на інших платформах).

Особливістю змагання є досить суворі технічні обмеження до програм: на одну партію дозволено використовувати лише декілька секунд процесорного часу, кілька десятків мегабайт оперативної пам'яті, єдиний програмний потік, а розмір програми має не перевершувати розмір дискети.[1] (Для порівняння, професійні шахові програми зазвичай мають можливість використовувати години процесорного часу, багатопотоковість, а розмір задіяної оперативної пам'яті і дискового простору вимірюється гігабайтами.)

У змаганні 2018 року програми можуть бути написані на мовах програмування C, C++, Pascal, Java, Python, JavaScript, Haskell, OCaml.

Переможці[ред. | ред. код]

Рік Гра Переможець Мова
програмування
2003 Caïssa Нідерланди Марсель Властуін н/д
2004 Lucky Words Нідерланди Еміль Крааікамп
2005 Lamistra Нідерланди Стевен Реберт
2006 Turn Right Польща Томек Чайка
2007 On The Run Сінгапур Вей Цюань Лім
2008 Alquerque Польща Томек Чайка
2009 Pillars Польща Томек Чайка C++
2010 Amazes Італія Карло Піовесан C++
2011 Dvonn Нідерланди Макс Вервер C
2012 Quantum tic-tac-toe Польща Томек Чайка C++
2013 Symple Марокко Абдессамад ель-Касімі C
2014 Poly-Y Нідерланди Леслі Веверс, Стевен те Брінке (разом) Java
2015 Ayu Росія Сергій Поваліхін C++
2016 6561 Марокко Абдессамад ель-Касімі C++11
2017 Less Нідерланди Марк Олденгоф C++11
2018 Blackhole Марокко Абдессамад ель-Касімі C
2019 Flippo Польща Томек Чайка C++17
2020 Gomoku Польща Томек Чайка C++17
2021 Zuniq Марокко Абдессамад ель-Касімі C++17
2022 Spaghetti Фінляндія Тапані Утріаінен C

Приз університету Віндесгайм[ред. | ред. код]

Паралельно або в рамках CodeCup проводиться змагання між програмами школярів, що беруть участь у Нідерландській олімпіаді з інформатики (NIO). Участь у цьому змаганні є одним із завдань першого туру олімпіади.[2][5]

За участь у змаганні учні можуть здобути максимум 100 балів до заліку в олімпіаді. Більшу частину з них учень отримує, якщо програма відповідає технічним умовам (не перевищує ліміт часу та не робить ходів всупереч правилам), інша частина — визначається рейтингом програми після фінального турніру. Учень-переможець отримує приз університету Віндесгайм (нід. Windesheim Digitalesprijs) (станом на 2019 рік — у розмірі 200 євро).[2][6]

В окремі роки, програми школярів грають у загальному заліку CodeCup, а в інші (зокрема, у 2000–2002, 2011–2017 роках) — в окрему гру.[2][5]

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. а б в Wevers, Lesley (2014). Monte-Carlo Tree Search for Poly-Y (PDF). University of Twente. Архів оригіналу (PDF) за 13 квітня 2017. Процитовано 16 вересня 2018.
  2. а б в г д Willem van der Vegt (2006). The CodeCup, an annual game programming competition [Архівовано 29 вересня 2018 у Wayback Machine.] (англ.)
  3. Hamed Ahmadi Nejad. My Artificial Intelligence Work [Архівовано 13 жовтня 2018 у Wayback Machine.]. (англ.)
  4. Abdessamad El Kasimi. Winning entry in CodeCup 2018 [Архівовано 17 червня 2018 у Wayback Machine.] (англ.)
  5. а б Past Contests [Архівовано 27 грудня 2018 у Wayback Machine.] — CodeCup. (англ.)
  6. De eerste ronde Nederlandse Informatica Olympiade 2018–2019 [Архівовано 15 січня 2019 у Wayback Machine.] — Informatica Olympiade. (нід.)

Посилання[ред. | ред. код]