MaximShipko's blog

By MaximShipko, history, 4 years ago, In Russian,

Всем привет!

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

Призы

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

Удачи!

Read more »

 
 
 
 
  • Vote: I like it
  • +55
  • Vote: I do not like it

By MaximShipko, 6 years ago, In Russian,

Всем привет!

Как и было обещано, в этом году мы во второй раз проводим мероприятие 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!

Read more »

 
 
 
 
  • Vote: I like it
  • +65
  • Vote: I do not like it

By MaximShipko, 7 years ago, translation, In English,

Good evening!

I'm glad to announce a series of improvements in the Codeforces::Gym subproject. Many people faced the following problem as they prepared problems in this section: to add a problem or edit an existing training a little bit, one had to parse and repackage the whole contest from the scratch in the Wizard. Another variant was manually editing the files on FTP. Both these ways added unreasonable challenges.

From now on you can create contest patches in the Wizard. Want to add a problem? There's no need to repackage the whole contest. Update the standings, add resources or statements? The procedure is simplicity itself. All you've got to do is to run the Wizard in the update mode and add only the really necessary changes. The Wizard will assemble the contest.zip package and mark it as a patch. You can upload the package into Taskbook in the usual manner.

Let's take a closer look at how the patch updates the contest.

  • The problem from the patch completely replaces the problem of the contest with the same index, otherwise it appears as a new problem. The problems from the contest's sandbox that don't occur in the patch, are left unchanged. To add problems to the contest, you need to run Wizard, create and parse one or several problems and assemble the package.

  • You can replace the problem statements and resources in the similar manner. A statement replaces the one that exists for this language, whatever the file name is. A resource replaces an existing one if they have the same names, otherwise a new resource is added.

  • File with standings of ghostly participants (contest.dat) replaces the existing one, if the new one contains at least one submit. If there is no such submit and the problems of the patch are a subset of the existing problems of the contest (in the sandbox), then contest.dat remains unchanged. Otherwise, a new contest.dat is generated (without submits) which joins together the sets of the contest problems and the patch problems. To update the results of the ghostly participants, you must parse the new standings in the Wizard, skip all problems by clicking Skip problem button, and pack.

Applying a patch assumes that the data of the patch and the current state of the sandbox are consistent. For this both the patch and the sandbox have a validation. This validation is similar to the one that occurs when you release a training, but is a bit simplified. When you download the full package of the contest, such validation does not occur, the archive unpacks as is and is checked only when the contest is released. The patch is applied only if both validations are completed successfully. Otherwise, the patch file is simply removed, and a new record in error.log of the training can tell you what went wrong.

The improvements also affected Taskbook, namely the validation system: if the problem was not changed since the last release of the contest, its validation won't be performed. This will dramatically speed up the process of releasing the training in the case of minor changes. If no file of the training was changed, then release will not happen, and the user will get the corresponding message.

As a little bonus we have made many improvements in the Wizard's interface. In particular, we added hotkeys for most actions (the details are in tooltips to the buttons), we have also improved a lot of dialogues:

  • We've accelerated launching the multiple file selection dialog in the Windows OS by hiding the Network element. The item can be returned by pressing a special button.

  • We've added a button that allows you to save the contest.dat, not assembling the full package.

  • We've changed the mechanism of launching open and save file dialogs. It had almost no impact on their look, but it let us add a number of enhancements, such as setting up a default file name and saving the current directory in the subsequent uses of the dialogue.

  • If saving the contest package fails, the user will be suggested to try to do it again. No need to re-validate the contest and re-assemble the package.

Read more »

 
 
 
 
  • Vote: I like it
  • +183
  • Vote: I do not like it

By MaximShipko, 7 years ago, translation, In English,

Hi!

There are a lot of contests and trainings on Codeforces now. And it's difficult to find a tutorial or announcement for a specific contest.

And now you have an opportunity to attach materials (Codeforces blogs or external URLs) to any contest. You can click on the paperclip below blog's title and fill the popup form to attach blog entry to the contest. Or you can attach any URL in the contest's sidebar frame. There you can see resources that are already attached to the contest. Visibility of material depends on user's locale and current phase of the contest. For example you can't view statements before contest start.

The access to manage (add or delete) resources of the contest have administrators, contest managers and all "red" users.

Read more »

 
 
 
 
  • Vote: I like it
  • +143
  • Vote: I do not like it

By MaximShipko, 8 years ago, translation, In English,

Hi all!

My name is Max Shipko. I am lead programer of Codeforces::Gym sub-project. In this blog you can post bugs of the system relating to this sub-project, as well as your feature requests. Codeforces team will make every effort to implement them.

This is a purely technical blog. Please bring as much as possible the specific information and does not throw a lengthy discussion and exchange of views on the sub-project. To do this, there is a special theme.
All posts not related to the topic will be deleted without warning.

UPD. Fixed bugs and implemented improvements ​​in the future will be deleted (hidden)
to prevent littering of the blog. All the obtained for these contributions, however, is not going anywhere.

Read more »

 
 
 
 
  • Vote: I like it
  • +28
  • Vote: I do not like it

By MaximShipko, 8 years ago, translation, In English,

Hello!

Now you can view rating statistics for specified country and/or city on the ratings page. But there are also separate pages for rankings of the countries and the cities themselves (links to them are in the sidebar "Top rated").

Rating of a country (city) depends on participants ratings from a country (city) and calculated by the following simple formula:


where N is a minimum of 100 and number of country (city) participants, and K = 0.75.

Maxim Shipko, Codeforces Team

Read more »

 
 
 
 
  • Vote: I like it
  • +153
  • Vote: I do not like it

By MaximShipko, 9 years ago, translation, In English,

Hello!

As many of you have noticed we have new features on Codeforces. The tab “Friends” has appeared on the user ratings page. But it is only the first of improvements made. Now you can view a list of friends on problemset standings, contest registrants and contribution standings pages. Because of increasing popularity of Codeforces the pagination has been added to the rating page.

But that's not all. In order to classify problems, it was decided to introduce the ability to add tags to them. Search by tags is not implemented yet, but administrators and users with high (your color should be at least blue) rating can add tags right now. To do this, simply open the desired problem and add tags in the sidebar form.

As you can see, the project development is actively underway. We would like to hear from you new constructive suggestions. 


Updated:

In the near future will be implemented a compact view of tags in the problemset and a setting to show/hide tags.


Maxim Shipko, Codeforces Team

Read more »

 
 
 
 
  • Vote: I like it
  • +84
  • Vote: I do not like it