Всем привет!
Всего через два дня, 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 получат футболку, а все финалисты — толстовку с символикой соревнования.