TopCoder Open 2016: как устроен личный чемпионат по программированию и кто победил в региональном этапе


TopCoder Open – это личный чемпионат по программированию, который в этом году включает в себя шесть направлений соревнований. Непосредственно спортивному программированию здесь посвящены категории Algorithm и Marathon, и в рамках обоих треков участники должны решить предложенные задачи, используя языки программирования Java, C#, C++ или Python. Отличие в том, что «марафонцам» на это выделяется гораздо больше времени: решение задач для отборочных этапов занимает несколько недель, а для очного тура – 12 часов. Соревнования в категории Algorithm же длятся всего полтора часа. Остальные треки TopCoder Open посвящены другим направлениям процесса разработки: в рамках трека Development компании-партнеры турнира предлагают денежные призы за создание цельного продукта, в ходе First2Finish программистам необходимо добавлять дополнительный функционал или исправления в программу, сайт или инфраструктуру, участникам трека IU Design предстоит с нуля разрабатывать дизайн-концепты, а участникам UI Prototype – «приделывать» back-end к уже имеющемуся дизайну.

b=01,left

«Категории чемпионата TopCoder Open охватывают почти все направления работы программиста, и это хорошо, потому что участники зачастую пробуют свои силы в новых категориях. Если у тебя в голове есть образ конкретного программного продукта, важно понимать, как он может быть реализован у конечного пользователя, какие бывают ограничения у компонентов системы, которые будут работать с твоим кодом. Это отличный способ стать программистом-универсалом, чтобы для воплощения своих идей не привлекать коллег по цеху и убедиться в том, что ты сам можешь написать продукт целиком – от фронтенда до базы данных», – рассказывает тьютор кафедры компьютерных технологий Университета ИТМО Лидия Перовская.

b=02,leftОтбор на участие в финале TopCoder Open традиционно проходит в режиме онлайн, но с прошлого года организаторы решили проводить очные этапы чемпионата по тем категориям, которые популярны в регионе: к примеру, с 6 по 7 августа в Джокьякарте (Индонезия) проходил региональный зачет по дизайну, а Университет ИТМО – альма-матер чемпионов мира по спортивному программированию – организовал проведение российского регионального этапа в категории Algorithm. Мероприятие в Санкт-Петербурге стало заключающим после серии очных соревнований в Пекине (Китай), Нью-Йорке (США) и Джайпуре (Индия).

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

b=04,left3 сентября на петербургский этап TopCoder Open Algorithm пришли 56 человек. У каждого – свой ноутбук, кто-то захватил тройник или удлинитель: по опыту предыдущих соревнований, розеток хватает не на всех. Для участия в турнире нужно зайти на «арену» TopCoder: все задания, разработанные эксклюзивно для регионального этапа, раздаются, выполняются и проверяются здесь. За решение каждой выдается определенное количество очков, и «стоимость» задачи начинает снижаться сразу после того, как участник открыл условия. Для самой простой задачи с максимальной стоимостью в 250 очков нужно вычислить наименьшее количество ходов, за которое можно победить противника в пошаговой RPG, если у игрока в распоряжении два вида атаки – normalAttack и buffedAttack. По словам Лидии Перовской, решить ее может даже обладатель базовых навыков программирования; однако турнирных задач три, две оставшиеся значительно сложнее, и в общей сложности на фазу кодинга отводится всего 85 минут.

b=00,left

«Когда участник отправляет ответ, результат ему сообщается только по итогам предварительных тестов – по сути, в его решение подставляются только условия из задачи. Но после фазы Coding наступает очень важная фаза Challenge, в ходе которой каждый участник проверяет на ошибки чужое решение. Если он найдет случай, в котором решение выполняется неверно или слишком долго, он может заработать дополнительные очки и отыграть время, потерянное во время фазы кодинга. Для этого нужно придумать тест, на котором решение даст неправильный ответ: например, если оппонент не рассмотрел частный случай, в котором какой-то из входных параметров будет иметь значение “0”, и делит на него, – объясняет Лидия Перовская. – Забавно то, что эти случаи могут быть добавлены к общему набору тестов, и твое решение может “упасть” на твоем же тесте. Часто бывает и так, что человек своим тестом “заваливает” большое количество чужих решений, но зарабатывает только 50 очков за одного оппонента».

b=03,leftПо результатам петербургского TopCoder Open Algorithm решения всех трех задач отправили только два участника – двукратный чемпион ACM ICPC Геннадий Короткевич и двукратный золотой медалист ACM ICPC Петр Митричев, однако системные тесты прошло только решение Митричева. Кроме того, он уже стал финалистом по результатам онлайн-туров, так что соревноваться в Wildcard Round за право попасть в финал TCO будут следующие десять человек. Шестеро них – выпускники и студенты Университета ИТМО: Адам Бардашевич, Борис Минаев, Нияз Нигматуллин, Илья Збань и Вадим Семенов. Кроме того, в число лучших вошли студенты СПбГУ Айдар Сайранов и Игорь Пышкин, выпускник МФТИ Яков Длугач и выпускник МГУ Егор Куликов. Сразиться за участие в финале TopCoder Open с победителями других региональных раундов им предстоит 10 сентября.

Добавим, что финал TopCoder Open-2016 пройдет в Вашингтоне (США) с 18 по 21 ноября.

Александр Пушкаш

Редакция новостного портала Университета ИТМО