Блог пользователя MaximShipko

Автор MaximShipko, история, 9 лет назад, По-русски

Всем привет!

Всего через два дня, 16 ноября в 00:00 официально стартует ставшее уже ежегодным соревнование Russian AI Cup — Российский кубок по программированию искусственного интеллекта. В этом году темой соревнования являются гонки без правил. Участникам предстоит не только научить свой кодемобиль быстро и правильно ездить, но также и помешать соперникам добраться до финиша раньше вас. Бета-тест мероприятия уже идёт, и если вас не пугают недоработки системы и возможные изменения правил, то вы можете начать создавать свою стратегию прямо сейчас. Не волнуйтесь выступить неудачно: рейтинг всех участников перед релизом будет сброшен к начальному значению.

Что?

Russian AI Cup — крупнейший в России чемпионат по программированию искусственного интеллекта и третье по счёту открытое соревнование для талантливых IT-специалистов, являющееся частью стратегии Mail.Ru Group по формированию и развитию конкурентной в мировых масштабах российской IT-индустрии.

Официально поддерживаются следующие языки программирования: C++, C#, Java, Pascal, Python 2 и Python 3. Однако, как и все прошлые годы, мы готовы поддержать языковые пакеты, разработанные сообществом. В этот раз, благодаря Марату Якупову и Александру Гришину, вы можете создать стратегию на языке Scala.

К участию в соревновании приглашаются как начинающие программисты, так и профессионалы. Не требуются никакие специальные знания, достаточно базовых навыков программирования.

Простейшая стратегия, способная доехать до финиша, состоит всего из десятка строк. Вот пример на языке Java:

import model.*;

import static java.lang.StrictMath.*;

public final class MyStrategy implements Strategy {
    @Override
    public void move(Car self, World world, Game game, Move move) {
        double nextWaypointX = (self.getNextWaypointX() + 0.5D) * game.getTrackTileSize();
        double nextWaypointY = (self.getNextWaypointY() + 0.5D) * game.getTrackTileSize();

        double angleToWaypoint = self.getAngleTo(nextWaypointX, nextWaypointY);
        double speedModule = hypot(self.getSpeedX(), self.getSpeedY());

        move.setWheelTurn(angleToWaypoint * 32.0D / PI);
        move.setEnginePower(0.75D);

        if (speedModule * speedModule * abs(angleToWaypoint) > 2.5D * 2.5D * PI) {
            move.setBrake(true);
        }
    }
}

Когда?

  • Песочница: с 9 ноября до 20 декабря открыта для всех желающих; первая неделя будет проходить в режиме бета-тестирования, в этот период возможны нестабильная работа системы и существенные изменения в правилах, а 16 ноября в 00:00 рейтинг в Песочнице будет сброшен до первоначального состояния
  • Раунд 1: 28–29 ноября.
  • Раунд 2: 5-6 декабря.
  • Финал: 12–13 декабря.

Призы

В этом году лучшие стратегии, помимо традиционной "яблочной" продукции, смогут претендовать на специальные призы от партнёров мероприятия — компаний WD и Kingston. Также все участники Раунда 2 получат футболку, а все финалисты — толстовку с символикой соревнования.

Призы

Полезные ссылки

Удачи!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +55
  • Проголосовать: не нравится

Автор MaximShipko, 11 лет назад, По-русски

Всем привет!

Как и было обещано, в этом году мы во второй раз проводим мероприятие Russian AI Cup, на этот раз 2013. Участнику предстоит выступить в роли командира небольшого отряда бойцов в пошаговой тактической игре CodeTroopers. 4 ноября в 00:00 часов состоится запуск открытого бета-тестирования чемпионата, которое продлится одну неделю. Основная функциональность уже готова, однако в этот период мы продолжим насыщать игру контентом, в частности, планируется добавление новых карт. Также мы проверим стабильность работы системы и исправим возможные ошибки. В период бета-тестирования возможны существенные изменения в правилах игры. 11 ноября в 00:00 состоится релиз чемпионата, при этом рейтинг участников будет сброшен к начальному значению. Поучаствовать в мероприятии можно тут: http://russianaicup.ru

Что?

Russian AI Cup — ежегодный проект Mail.Ru Group и Саратовского государственного университета. Это соревнование — третье мероприятие холдинга Mail.Ru Group для талантливых IT-специалистов, в этой серии мероприятий уже проводятся Russian Code Cup и Russian Design Cup.

К участию в соревновании приглашаются как начинающие программисты, так и профессионалы. Не требуются никакие специальные знания, достаточно базовых навыков программирования.

Поддерживаемые языки соревнования — C++, C#, Java, Pascal, Python 2 и Python 3.

Вот пример минимальной стратегии на Java:

public final class MyStrategy implements Strategy {
   @Override
   public void move(Trooper self, World world, Game game, Move move) {
       if (self.getActionPoints() >= self.getShotCost()) {
           Trooper[] troopers = world.getTroopers();

           for (int i = 0; i < troopers.length; ++i) {
               Trooper trooper = troopers[i];

               boolean canShoot = world.isVisible(self.getShootingRange(),
                       self.getX(), self.getY(), self.getStance(),
                       trooper.getX(), trooper.getY(), trooper.getStance()
               );

               if (canShoot && !trooper.isTeammate()) {
                   move.setAction(ActionType.SHOOT);
                   move.setX(trooper.getX());
                   move.setY(trooper.getY());
                   return;
               }
           }
       }
   }
}

Где?

Заходите на http://russianaicup.ru и регистрируйтесь (мы рекомендуем пользоваться социальными сетями для аутентификации). Для участия в соревновании достаточно одной принятой посылки, и вы сразу попадете в рейтинг!

Когда?

  • Песочница: с 4 ноября по 15 декабря (с 4 по 10 ноября — режим бета-тестирования);
  • Раунд 1: 23–24 ноября;
  • Раунд 2: 30 ноября–1 декабря;
  • Финал: 7–8 декабря.

Призы?

Конечно же, без них не обойдется :) Лучшие участники получат самые современные гаджеты в крутых комплектациях, среди которых MacBook Pro with Retina, MacBook Air, iPad и некоторые другие приятности.

Призы

Вау, как интересно, а можно поподробнее?

Подробнее вы можете прочитать на самом сайте http://russianaicup.ru, вот полезные ссылки:

Let’s play!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +65
  • Проголосовать: не нравится

Автор MaximShipko, 12 лет назад, По-русски

Добрый вечер!

Я рад вам сообщить о ряде улучшений, касающихся подпроекта Codeforces::Тренировки. При подготовке соревнований в данном разделе многие сталкивались со следующей проблемой: для добавления задачи или внесения небольшой правки в существующую тренировку было необходимо распарсить и пересобрать всё соревнование в Wizard'е с нуля. Другим вариантом было ручное редактирование файлов на FTP. Оба этих способа создавали дополнительные необоснованные трудности.

Сейчас в Wizard'е появилась возможность создавать патчи для соревнования. Хотите добавить задачу? Не нужно пересобирать весь контест. Обновить результаты, добавить ресурсы, условия? Нет ничего проще. Достаточно запустить Wizard в режиме редактирования и внести лишь те изменения, которые действительно необходимы. Wizard соберёт пакет contest.zip и пометит его как патч. Закачка пакета в Taskbook происходит обычным образом.

Рассмотрим подробнее, каким образом патч обновляет соревнование.

  • Задача из патча полностью заменяет существующую задачу соревнования с таким же индексом, иначе добавляется как новая задача. Задачи из sandbox'а соревнования, не присутствующие в патче, остаются неизменными. Для добавления задач в соревнование необходимо запустить Wizard, создать и распарсить одну или несколько задач и собрать пакет.

  • Таким же образом заменяются условия и ресурсы соревнования. Условие замещает существующее для этого языка независимо от имени файла, ресурс заменяет существующий при совпадении имён файлов, иначе добавляется новый.

  • Сведения о положении призрачных участников (contest.dat) заменяют существующие, если в новых содержится информация хотя бы об одной посылке. Если посылок нет и задачи патча являются подмножеством уже существующих задач соревнования (в sandbox'е), то contest.dat остаётся неизменным. В противном случае сгенерируется новый contest.dat (без посылок) с объединением множества задач соревнования и патча. Для обновления результатов призрачных участников необходимо распарсить новые результаты в Wizard'е, пропустить все задачи, нажав кнопку Skip problem, и собрать пакет.

Применение патча предполагает, что данные патча и текущее состояние sandbox'а являются консистентными. Для этого и патч, и sandbox подвергаются валидации, аналогичной той, что происходит при обновлении тренировки, но немного упрощённой (при закачке полного пакета соревнования подобной валидации не происходит, архив распаковывается "as is" и проверяется только при выпуске релиза контеста). Лишь в случае успешного завершения обеих валидаций происходит применение патча. В противном случае патч просто удаляется, а в error.log тренировки добавляется запись, из которой вы можете узнать, что же всё-таки пошло не так.

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

В качестве небольшого бонуса мы сделали много улучшений в интерфейсе Wizard'а. В частности, для большинства действий появились горячие клавиши (подробнее во всплывающих подсказках к кнопкам), также были усовершенствованы многие диалоги:

  • Ускорен запуск диалога выбора множества файлов в операционной системе Windows засчёт сокрытия элемента Network. Элемент можно вернуть, нажав специальную кнопку.

  • Добавлена кнопка, позволяющая сохранить contest.dat, не собирая полный пакет.

  • Изменён механизм запуска диалогов выбора и сохранения файлов. Это почти не повлияло на внешний вид, однако позволило добавить ряд усовершенствований, таких, как установка имени файла по-умолчанию и сохранение текущего каталога при последующих использованиях диалога.

  • В случае неудачи сохранения пакета соревнования пользователю будет предложено попробовать сделать это ещё раз. Не нужно будет заново валидировать соревнование и собирать пакет.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +183
  • Проголосовать: не нравится

Автор MaximShipko, 13 лет назад, По-русски

Всем привет!

Количество контестов на Codeforces неуклонно растёт, а теперь ещё появились и тренировки. Найти среди блогов разбор задач или анонс для конкретного соревнования становится практически невыполнимой задачей, особенно, если соревнование проходило достаточно давно.

В связи с этим нами введена новая возможность прикрепления блогов Codeforces и любых других внешних ресурсов к соревнованиям. Для прикрепления блога достаточно нажать на скрепку под его заголовком и заполнить всплывающую форму. На странице же контеста в боковом фрейме можно прикрепить в качестве ресурса произвольный URL. Там же можно увидеть уже прикреплённые к соревнованию ресурсы. На видимость ресурсов влияет текущая локаль пользователя и состояние соревнования, например, вы не сможете увидеть в этом списке условия задач до начала контеста, а разборы — до его завершения.

Правом на изменение (добавление и удаление) ресурсов соревнования обладают администраторы, менеджеры соревнования, а также все "красные". Ресурсы тренировок, взятые из XML-дескрипторов, редактировать запрещено. Они будут удалены / добавлены после внесения соответствующих изменений в дескриптор.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +143
  • Проголосовать: не нравится

Автор MaximShipko, 13 лет назад, По-русски

Привет всем!

Меня зовут Максим Шипко и я являюсь ведущим разработчиком  подпроекта Codeforces::Тренировки. В этом блоге вы можете публиковать баги системы, относящиеся к подпроекту, а также ваши пожелания по улучшению его работы. Команда Codeforces приложит максимум усилий для их реализации.

Это сугубо технический блог. Пожалуйста, приводите как можно более конкретную информацию и не устраивайте пространных рассуждений или обмена мнений по подпроекту. Для этого существует специальная тема. Все посты, не относящиеся к теме, будут удаляться без предупреждения.

UPD. В целях предотвращения замусоривания темы выполненные исправления и улучшения в дальнейшем будут удаляться (скрываться). Весь полученный за них вклад, тем не менее, никуда не денется.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +28
  • Проголосовать: не нравится

Автор MaximShipko, 14 лет назад, По-русски

Всем привет!

Случилось то, чего все так долго ждали. В рейтинге пользователей появилась возможность устанавливать фильтр по странам и городам. А также появились отдельные страницы для рейтинга самих стран и городов (ссылки на них находятся в боковой панели "Лидеры (рейтинг)").

Формула его подсчёта довольно проста, однако отражает как количество участников, так и их уровень:


где N - некоторая константа (здесь можно было взять количество человек в стране/городе, но значения выше 100 практически не изменяют картину), а K = 0,75.

Добавлено:
  1. По многочисленным просьбам, рейтинг страны умножен на (1 - K).
  2. В рейтинге городов и стран не отображаются населённые пункты, если количество участников в них меньше двух.
  3. Теперь, если установлен фильтр по стране/городу, в первой колонке отображается положение пользователя в данном населённом пункте (в скобках по прежнему можно увидеть его положение в общем зачёте).

Максим Шипко, команда Codeforces

Полный текст и комментарии »

  • Проголосовать: нравится
  • +153
  • Проголосовать: не нравится

Автор MaximShipko, 14 лет назад, По-русски

Всем привет!

Как многие могли заметить, недавно в рейтинге пользователей появилась закладка "Рейтинг друзей". Но это лишь первое из ряда улучшений, сделанных по вашим заявкам и не только. Теперь вы можете просматривать список друзей и команд с их участием в архиве задач, списке зарегистрированных на контест и в списке лидеров по вкладу. В связи с неуклонным ростом числа пользователей Codeforces (и, соответственно, размера страницы рейтинга) на ней был введён постраничный просмотр. Механизм подбора доступных для перехода страниц также был усовершенствован: теперь всегда доступны первая, последняя и несколько соседних с текущей.

Но и это ещё не всё. Для классификации и более удобного поиска задач было решено ввести возможность добавлять к ним теги. Поиск ещё не реализован, однако администраторы и пользователи с высоким (цвет хэндла должен быть как минимум синим) рейтингом,  решившие задачу, могут добавлять теги уже сейчас. Для этого достаточно открыть нужную задачу из архива или контеста после его завершения и воспользоваться новой формой.

Как видите, работа над проектом активно ведётся. Мы рады будем услышать от вас новые конструктивные пожелания. 


Добавлено:

Помимо поиска в ближайшем будущем будет реализовано компактное отображение тегов в архиве задач (можете излагать свои мысли по поводу того, как их лучше представить) и пользовательская настройка, позволяющая скрывать теги.


Максим Шипко, команда Codeforces

Полный текст и комментарии »

  • Проголосовать: нравится
  • +84
  • Проголосовать: не нравится