Как Контур вошел в тройку лучших во всемирном соревновании по программированию CODINGAME SPRING CHALLENGE 2020

Соревнование длилось 10 дней и собрало около 5000 участников. Смысл челленджа — создать более совершенного бота, чем противник. Сергей Марьин и Евгения Садовничая, участники соревнования и разработчики Контура, рассказали как это было.

Как Контур вошел в тройку лучших во всемирном соревновании по программированию CODINGAME SPRING CHALLENGE 2020

— В чем суть игры?

Сергей Марьин
Ведущий инженер-программист в Контуре

CODINGAME SPRING CHALLENGE 2020 — международное соревнование
по программированию, в котором бесплатно может участвовать каждый желающий. В это раз конкурс проводился на протяжении десяти дней, участие в соревновании приняли около 5000 программистов со всего мира.

Организаторы помимо личного зачета составили отдельные рейтинги по компаниям и университетам. Это первое в истории платформы официальное соревнование с командным зачетом (отдельно для компаний, отдельно для университетов). Итоговый балл рассчитывался по результатам пяти лучших участников команды.

В этот раз в качестве игры был Pacman, но непростой: каждый игрок управлял одновременно несколькими пэкманами разных типов (камень — ножницы — бумага). В зависимости от типа пэкманы могли поедать друг друга. Иногда можно было менять тип или ускоряться. Побеждал тот, кто съел больше всего конфеток, разбросанных по полю. Чтобы участникам было интереснее, организаторы решили сделать эту игру с неполной информацией: пэкманы могли видеть противника только по прямой до конца коридора. В результате приходилось по косвенной информации предсказывать действия соперника.

Как Контур вошел в тройку лучших во всемирном соревновании по программированию CODINGAME SPRING CHALLENGE 2020

— Сложно было?

Евгения Садовничая
Ведущий инженер-программист в Контуре

У меня не было сложностей, кроме недостатка времени и багов. Было несколько обидных. Например, у меня в функции оценки пути стояли очень большие штрафы за приближение к сопернику и из-за этого мои паки от всех бегали, я не сразу поняла, что это критично и мешает мне пройти в легенду.

После соревнования игру перенесли в раздел multiplayer, поэтому можно продолжать пилить своего бота или присоединиться к борьбе с нуля, если не участвовал в оригинальном соревновании. Это хорошо — можно провести работу над ошибками или попробовать новые варианты решения.

— Расскажите, как собирали команду, отбирали участников?

Сергей Марьин: На самом деле, соревнование, в первую очередь, личное, могут участвовать все и нет каких-либо особых командных тактик. Многие ребята из Контура участвуют в таких соревнованиях сами по себе и показывают высокие результаты. Единственное, что я сделал — опубликовал статью в корпоративной соцсети Контура — Стаффе. В ней я рассказал, что за соревнование будет, что мы в целом хорошо выступаем и что в новом командном рейтинге нам вполне реально войти в топ-5 компаний в мире. И мы это сделали! Одним из самых серьезных соперников был, конечно, Яндекс. В этот раз их состав был очень внушительным и серьезно настроенным. Мы долго с ними соперничали, то опережая, то отставая. Во второй половине контеста мы сильно сдали и временами казалось, что уже не доберемся до первой пятерки. Но на последних выходных перед окончанием соревнования, победив Золотого босса, в Легенду прорвалось уже четверо наших ребят. В результате мы стали не только первыми в России, но и вторыми в мире.

— А зачем вообще участвовать в соревнованиях?

Евгения Садовничая: Для большинства участников умение писать ботов для игр — это, конечно, развлечение, но развлечение полезное. Программирование ботов развивает: участники придумывают идеи, проверяют их на практике и учатся доводить их до рабочего состояния. Выигрывают, как правило, умные и эффективные боты без багов. Поэтому приходится развивать навыки тестирования, отладки, профилирования и оптимизации своего кода. Наконец, часто в ботостроении помогают знания алгоритмов и нетривиальные идеи.

Как Контур вошел в тройку лучших во всемирном соревновании по программированию CODINGAME SPRING CHALLENGE 2020

— Почему Codingame?

Евгения Садовничая: Во-первых, в таких контестах ярко выражен дух соревновательности, потому что игра против соперника. К тому же, каждые несколько дней открываются новые лиги и это мотивирует писать бота дальше, чтобы туда пройти.

Во-вторых, мне нравится платформа. Удобный интерфейс, красивая визуализиция, все готово, чтобы начать кодить крутого бота. Еще там развитое комьюнити: постоянно происходит общение, обсуждают идеи, алгоритмы, языки. Например, в предыдущем контесте были идеи типа, давать больше очков, если пак остановился на повороте или больше разведывать в начале игры.

— Вы сказали, что вошли в Легендарную лигу. Были еще какие-то?

Сергей Марьин: Да, лиг было несколько. Многие контуровцы финишировали в двух самых топовых: в Легендарной и Золотой. Очки суммировались у пяти лучших игроков за команду.

В Легендарную вошли: Рустам Багаутдинов (Akarachudra), я (KonamiCode), Тимур Кушуков (timqsh), и Женя (NightLuna).Следующая после Легендарной — Золотая лига. Здесь оказалось трое наших ребят: Иван Дашкевич (spaceorc), Сергей Цыганков (SeJ),Сергей Авдонин (AtrA).

Вообще в ТОП-100 компаний вошли: Thales (1), Яндекс (4), Ubisoft (11), Google (21), Samsung (32), Microsoft (84) и другие. Был еще рейтинг учебных заведений. Второе место в нем заняли тоже наши ребята из УрФУ. В рейтинг также попали: Вроцлавский университет (1), 42 Paris (3), Токийский университет (8), МФТИ (34), МГУ (35), Университет Осаки (63).

Дата следующего подобного соревнования на платформе CODINGAME еще не определена, но записаться на него можно уже сейчас. Мы, конечно, снова будем участвовать и бороться за победу.

88
1 комментарий

А тех, кому нравятся подобные соревнования, приглашаем на ICFP Contest. В отличие от Codingame это соревнование командное (команды любого размера!) и длительностью 72 часа. Все объявления в официальном твиттере соревнования: https://twitter.com/icfpcontest2020

2
Ответить