Открытое соревнование по программированию искусственного интеллекта

Языковые пакеты

Раунд 1: до начала

Проект

Песочница

Раунд 1

Раунд 2

Финал

Последние комментарии

24 ноября 15:40: tyamgin написал комментарий в посте Чёрная пятница
24 ноября 15:37: 13human написал комментарий в посте Чёрная пятница
24 ноября 15:36: AlexKol написал комментарий в посте Чёрная пятница
24 ноября 15:33: Sanda написал комментарий в посте Чёрная пятница
24 ноября 14:50: AlexKol написал комментарий в посте Чёрная пятница
24 ноября 14:48: 13human написал комментарий в посте Чёрная пятница
24 ноября 14:47: yayuye написал комментарий в посте Чёрная пятница
24 ноября 14:24: AlexKol написал комментарий в посте Чёрная пятница
24 ноября 14:04: yayuye написал комментарий в посте Чёрная пятница
24 ноября 13:42: BaR5uk написал комментарий в посте Быстрый старт

Группа ВКонтакте

Telegram-чат

 

Для написания собственной стратегии для CodeWars опубликованы языковые пакеты. На данный момент мы поддерживаем языки:

Язык Версия компилятора Ссылки
C++14 GNU MinGW 6.2+ скачать
Java Oracle JDK 1.8 скачать
C# Roslyn 1.3+ скачать
Pascal Free Pascal 3.0+ [Delphi mode] скачать
Python2 Python 2.7+ с NumPy и SciPy скачать
Python3 Python 3.5+ с NumPy и SciPy скачать
Ruby JRuby 9.1+ скачать
D DMD 2.072+ скачать/выписать
Scala Scala 2.12+ скачать/выписать
Kotlin Kotlin 1.2+ скачать/выписать
Go Go 1.8+ скачать/выписать
Swift Swift 3.1+ скачать/выписать
Rust Rust 1.21+ скачать/выписать
Nim Nim 0.17+ скачать/выписать

Каждый языковой пакет содержит в себе набор моделей (Vehicle, Player и т.д.), класс MyStrategy, в котором вы пишете логику своей стратегии, а также файлы Runner.* и RemoteProcessClient.*, необходимые соответственно для запуска процесса стратегии и обмена данными с процессом игры.

В каждом языковом пакете находятся bat-файлы, осуществляющие сборку стратегии в исполняемый файл (исключения: языковой пакет на Java собирается в файл JAR, языковые пакеты на Python и Ruby собираются в ZIP-архив).

Кроме того, в некоторые языковые пакеты вложены файлы проектов одной или нескольких популярных IDE.

Также все языковые пакеты опубликованы на GitHub. Как и на нашем сайте, там вы всегда сможете найти актуальную версию пакета, а также отслеживать историю внесённых правок.

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

Список требований для потенциальных разработчиков пакетов на других языках:

  • пакет должен быть написан в едином популярном для языка code style,
  • пакет должен быть максимально эквивалентен стандартным пакетам,
  • пакет должен собираться и правильно работать в популярных реализациях языка под разными платформами,
  • поведение сэмпловой стратегии должно быть эквивалентно поведению сэмпловых стратегий из других пакетов,
  • разработчик должен гарантировать качественную и быструю поддержку на время всего чемпионата,
  • код должен быть размещен на Github,
  • автор должен своевременно и оперативно удовлетворять всем требованиям жюри по исправлению/улучшению пакета,
  • язык должен иметь официальную поддержку в OC Windows 7, 32-bit.


4eyes

4eyes

Akvelon

This organization has no public repositories. (github)

07.11.2017 2:38:53
4way

4way

Первый Бит

4eyes

4eyes

Akvelon

This organization has no public repositories. (github)

Читайте новость на стартовой

07.11.2017 3:17:50
Trinidad

Trinidad

MarketSoft

Планируется ли языковой пакет для Go?

07.11.2017 16:19:37
Nerumb

Nerumb

Альфа-Банк

Когда будет доступен Kotlin ?

07.11.2017 17:04:14
weterok_ai

weterok_ai

БТИ (филиал АГТУ им. Ползунова)

Trinidad

Trinidad

MarketSoft

Планируется ли языковой пакет для Go?

да в процессе стартового бота пишу, завтра видно будет получилось нет

07.11.2017 17:56:17
SladeThe

SladeThe

Команда Russian AI Cup

Nerumb

Nerumb

Альфа-Банк

Когда будет доступен Kotlin ?

Скоро. До конца беты точно будет.

07.11.2017 18:07:23
phts

phts

Гродно

Javascript добавьте, пожалуйста

07.11.2017 21:54:52
olsh

olsh

Архангельск

Roslyn 1.3+ Можно немножко подробнее, что значит + в конце версии? Можно использовать Roslyn 2 и фичи C#7?

07.11.2017 22:11:06
SladeThe

SladeThe

Команда Russian AI Cup

olsh

olsh

Архангельск

Это значит, что мы используем для компиляции Roslyn 1.3 или более поздней версии.

07.11.2017 22:22:01
olsh

olsh

Архангельск

1.3 или более поздней версии.

Опять непонятно, какую версию C# можно использовать? Если более поздней, то получается можно использовать хоть C# 7.2, но ведь это не так? https://github.com/dotnet/roslyn/wiki/NuGet-packages#versioning

07.11.2017 22:55:07
dimir

dimir

СПбГЭТУ (ЛЭТИ)

В C++ пакете обычные

    enum VehicleType {
        _VEHICLE_UNKNOWN_ = -1,
        VEHICLE_ARRV = 0,
         ...

вместо

enum class VehicleType {
        _VEHICLE_UNKNOWN_ = -1,
        VEHICLE_ARRV = 0,
         ...

Поправьте если не трудно.

07.11.2017 23:47:04
SladeThe

SladeThe

Команда Russian AI Cup

dimir

dimir

СПбГЭТУ (ЛЭТИ)

В C++ пакете обычные enum VehicleType { VEHICLE_UNKNOWN = -1, VEHICLE_ARRV = 0, … вместо enum class VehicleType { VEHICLE_UNKNOWN = -1, VEHICLE_ARRV = 0, … Поправьте если не трудно.

Так и задумано.

07.11.2017 23:56:53
SladeThe

SladeThe

Команда Russian AI Cup

amurushkin

amurushkin

ХНУРЭ (бывш. ХИРЭ, ХТУРЭ)

а почему в С++ пакете есть VEHICLE_UNKNOWN , а в питоне нет?

VEHICLE_UNKNOWN заменяет None.

07.11.2017 23:57:24
dimir

dimir

СПбГЭТУ (ЛЭТИ)

SladeThe

SladeThe

Команда Russian AI Cup

Так и задумано.

А зачем ? Специально же class добавляли для перечислений, чтобы ошибок меньше было. Плюс в IDE (у меня QtCreator) если указан class, то автодополнение выдаст только значения для этого перечисления, а не для всех доступных перечислений.

08.11.2017 0:04:29
SladeThe

SladeThe

Команда Russian AI Cup

dimir

dimir

СПбГЭТУ (ЛЭТИ)

А зачем ? Специально же class добавляли для перечислений, чтобы ошибок меньше было. Плюс в IDE (у меня QtCreator) если указан class, то автодополнение выдаст только значения для этого перечисления, а не для всех доступных перечислений.

У вас так. Но кто-то может пользоваться другой/более старой IDE, версией компилятора. У нас на сайте используется C++14, но в целом мы старались, чтобы клиент был максимально обратно совместимым. А если в коде самой стратегии были использованы новые фишки, значит человек отдаёт себе отчёт, чем он будет компилировать и в какой среде разрабатывать. Мы подумаем ещё на эту тему. Возможно, сделаем, как вы предлагаете.

08.11.2017 1:07:28
dimir

dimir

СПбГЭТУ (ЛЭТИ)

SladeThe

SladeThe

Команда Russian AI Cup

У вас так. Но кто-то может пользоваться другой/более старой IDE, версией компилятора. У нас на сайте используется C++14, но в целом мы старались, чтобы клиент был максимально обратно совместимым. А если в коде самой стратегии были использованы новые фишки, значит человек отдаёт себе отчёт, чем он будет компилировать и в какой среде разрабатывать. Мы подумаем ещё на эту тему. Возможно, сделаем, как вы предлагаете.

Ну пока получается что указана версия с++14, а по факту там максимум с++11.

Но при этом скрипт сборки требует комиплятор с поддержкой с++14, мне из-за этого пришлось ставить 7-ой gcc вместо четвёртого. Может просто понизить требуемую версию ? Для некоторых старых версий дистрибутивов Ubuntu например gcc с поддержкой c++14 может отсутсвовать в стандартных репозиториях пакетов.

Для local-runner мне пришлось вручную ставить jre-8, потому что в стандартных репозиториях trusty tahr только jre7.

P.S. Может для QtCreator добавить pro файл ? Под linux там что-то типа такого

08.11.2017 9:58:57
cjey

Сделайте пожалуйста чтобы метод Move() либо возвращал действие в качестве своего результала, либо объявите параметр move как out

    public sealed class MyStrategy : IStrategy {
        public void Move(Player me, World world, Game game, Move move) {
            if (world.TickIndex == 0) {
                move.Action = ActionType.ClearAndSelect;
                move.Right = world.Width;
                move.Bottom = world.Height;
                return;
            }

            if (world.TickIndex == 1) {
                move.Action = ActionType.Move;
                move.X = world.Width / 2.0D;
                move.Y = world.Height / 2.0D;
            }
        }
    }
}

В противном случае приходится писать такой код

        {
            var tactic = PickTactic(me, world, game, units);
            var result = tactic.GetMove(me, world, game, units);

            move.Action          = result.Action          ;
            move.Left            = result.Left            ;
            move.Top             = result.Top             ;
            move.Right           = result.Right           ;
            move.Bottom          = result.Bottom          ;
            move.X               = result.X               ;
            move.Y               = result.Y               ;
            move.Angle           = result.Angle           ;
            move.MaxSpeed        = result.MaxSpeed        ;
            move.MaxAngularSpeed = result.MaxAngularSpeed ;
            move.VehicleType     = result.VehicleType     ;
            move.FacilityId      = result.FacilityId      ;
        }

Сэкономите много часов отладки участникам ;)

08.11.2017 12:06:48
cjey

Сделайте пожалуйста чтобы метод Move() либо возвращал действие в качестве своего результала, либо объявите параметр move как out public sealed class MyStrategy : IStrategy { public void Move(Player me, World world, Game game, Move move) { if (world.TickIndex == 0) { move.Action = ActionType.ClearAndSelect; move.Right = world.Width; move.Bottom = world.Height; return; }

        if (world.TickIndex == 1) {
            move.Action = ActionType.Move;
            move.X = world.Width / 2.0D;
            move.Y = world.Height / 2.0D;
        }
    }
}

} …

(пакет C#)

08.11.2017 12:08:02
zavod

PHP и JS все еще не популярны?

08.11.2017 12:24:53
Quake

Quake

Санкт-Петербург

Набросал языковой пакет для JS, за основу взял прошлогодний от Megabyte. https://github.com/phpspd/js-cgdk

08.11.2017 12:33:00
13human

13human

Квартплата 24

Кто-нибудь занимается разработкой пакета для Scala? Или самому заняться?

08.11.2017 15:57:32
evgwed

evgwed

Ульяновский ГТУ

PHP и JS все еще не популярны?

Можно запилить под PHP, если есть желание.

08.11.2017 16:08:16
weterok_ai

weterok_ai

БТИ (филиал АГТУ им. Ползунова)

разработка пакет для Go создал тему на форуме http://russianaicup.ru/forum/index.php?topic=786.0

08.11.2017 17:08:05
Fe11

Fe11

УрФУ (ранее УрГУ и УГТУ-УПИ)

Scala пожалст тоже - там оооооочень удобно, и вам будет не сложно добавить (просто скала компилятор подключить и усе)

08.11.2017 18:29:14
cthulhu

cthulhu

101media

А есть шансы, что вы добавите поддержку хаскеля, если я пакет напишу?

08.11.2017 19:31:46
elsid

elsid

Москва

Если кому-то интересен Rust: http://russianaicup.ru/forum/index.php?topic=792.0

09.11.2017 2:59:37
pks

pks

частное лицо

Ждать ли php ?

09.11.2017 17:51:51
MikeWazowski

MikeWazowski

Москва

Подскажите чайнику, как запустить local-runner из под IntelliJ IDEA ? выполнение команды меню run ‘Runner’ приводит к ошибке: Exception in thread “main” java.net.ConnectException: Connection refused: connect

09.11.2017 18:50:58
callidus

callidus

Киев

MikeWazowski

MikeWazowski

Москва

Подскажите чайнику, как запустить local-runner из под IntelliJ IDEA ? выполнение команды меню run ‘Runner’ приводит к ошибке: Exception in thread “main” java.net.ConnectException: Connection refused: connect

Сначала нужно запустить сам local-runner при помощи local-runner.sh, а потом вашу стратегию

09.11.2017 18:53:26
MikeWazowski

MikeWazowski

Москва

callidus

callidus

Киев

Сначала нужно запустить сам local-runner при помощи local-runner.sh, а потом вашу стратегию

Сначала нужно запустить сам local-runner при помощи local-runner.sh, а потом вашу стратегию ну так я же и спрашиваю, как это сделать из-под IDEA, а не скриптом

09.11.2017 19:26:01
MikeWazowski

MikeWazowski

Москва

callidus

callidus

Киев

Сначала нужно запустить сам local-runner при помощи local-runner.sh, а потом вашу стратегию

ну так я же и спрашиваю, как это сделать из-под IDEA, а не скриптом

09.11.2017 19:27:02
callidus

callidus

Киев

MikeWazowski

MikeWazowski

Москва

ну так я же и спрашиваю, как это сделать из-под IDEA, а не скриптом

Наверное мы друг друга не допонимаем, local-runner - это jar файл, зачем его запускать из Idea?

09.11.2017 21:18:48
Scrblmer

Scrblmer

Казань

Наверно @MikeWazowski хочет автоматически запускать local-runner перед стартом своей стратегии через IDEA. Надо в IDEA добавить запуск скрипта local-runner’а в “before launch”. Для этого открываешь “Edit configurations”, далее в “before launch” добавить external tool с скриптом запуска local-runner. Только скрипт надо поправить так, чтобы он запустил раннер в background, чтобы он вернул управление IDEA. В винде это “START /b команда”, в линуксе “команда &”

09.11.2017 22:23:49
Scrblmer

Scrblmer

Казань

А, и добавить паузу, чтобы локал-раннер успел запустить до старта стратегии.

09.11.2017 22:24:40
Gamm

Сделайте пожалуйста чтобы метод Move() либо возвращал действие в качестве своего результала, либо объявите параметр move как out public sealed class MyStrategy : IStrategy { public void Move(Player me, World world, Game game, Move move) { if (world.TickIndex == 0) { move.Action = ActionType.ClearAndSelect; move.Right = world.Width; move.Bottom = world.Height; return; }

        if (world.TickIndex == 1) {
            move.Action = ActionType.Move;
            move.X = world.Width / 2.0D;
            move.Y = world.Height / 2.0D;
        }
    }
}

} …

Плюсую, сам не сразу понял почему ничего не работает:)

09.11.2017 23:51:38
Jeners

У вас косяк в пакете под паскаль в FacilityControl.pas Ругается на эту строчку constructor TFacility.Create(const facility: TFacility); overload; Я в принципе локально у себя поправил. Ранер успешно запускается и конектится к эмулятору, но не уверен будет ли работать оно у вас

10.11.2017 0:09:05
GreenHorsy

GreenHorsy

Таганрог

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

10.11.2017 2:15:03
imrinat
GreenHorsy

GreenHorsy

Таганрог

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

public static final ActionType ADD_TO_SELECTION должен помочь видимо

10.11.2017 7:34:37
GreenHorsy

GreenHorsy

Таганрог

public static final ActionType ADD_TO_SELECTION должен помочь видимо

Например у меня от группы номер 1 отбилась часть юнитов к группе номер 2, я не хочу менять позиции групп, но мне надо вернуть юнитов к своей группе, если я их просто выделю я задену часть юнитов 2ой группы, чего мне не хотелось бы. Тут мог бы помочь deselect но если групп больше 2х это уже заморочь и трата большого количества команд.

10.11.2017 11:34:56
AlexKol

AlexKol

BB

GreenHorsy

GreenHorsy

Таганрог

Например у меня от группы номер 1 отбилась часть юнитов к группе номер 2, я не хочу менять позиции групп, но мне надо вернуть юнитов к своей группе, если я их просто выделю я задену часть юнитов 2ой группы, чего мне не хотелось бы. Тут мог бы помочь deselect но если групп больше 2х это уже заморочь и трата большого количества команд.

Выделяешь первой командой, второй исключаешь группу 2.

10.11.2017 11:48:32
GreenHorsy

GreenHorsy

Таганрог

AlexKol

AlexKol

BB

Выделяешь первой командой, второй исключаешь группу 2.

Спасибо, хороший совет

10.11.2017 13:31:46
MikeWazowski

MikeWazowski

Москва

Scrblmer

Scrblmer

Казань

Наверно @MikeWazowski хочет автоматически запускать local-runner перед стартом своей стратегии через IDEA. Надо в IDEA добавить запуск скрипта local-runner’а в “before launch”. Для этого открываешь “Edit configurations”, далее в “before launch” добавить external tool с скриптом запуска local-runner. Только скрипт надо поправить так, чтобы он запустил раннер в background, чтобы он вернул управление IDEA. В винде это “START /b команда”, в линуксе “команда &”

Спасибо ! Теперь по Shift-F10 все распрекрасно запускается без лишних телодвижений по запуску скрипта ;)

10.11.2017 15:39:13
MikeWazowski

MikeWazowski

Москва

Scrblmer

Scrblmer

Казань

А, и добавить паузу, чтобы локал-раннер успел запустить до старта стратегии.

обошлось без паузы, пока идет компиляция, local-runner успевает запуститься

10.11.2017 15:41:18
Gassa

Gassa

СПбГУ

Языковой пакет для языка D выложен здесь: https://github.com/GassaFM/raicup-2017-dlang-cgdk-ru. Пока только с русскими комментариями и документацией; когда появится java-cgdk-en, будет и английская версия.

Quick Start Guy тоже переведён и лежит там же: ru, en.

А главное - в системе уже можно послать стратегию на D! Спасибо авторам соревнования за оперативное внедрение.

Тема на форуме: http://russianaicup.ru/forum/index.php?topic=801.0.

10.11.2017 20:30:10
Daneel

Daneel

БГУИР

Добрый день. У меня возникла проблема. Не могу отослать решение на c++14. Ошибка компиляции. ‘ACTION_ROTATE’ is not a member of ‘model::ActionType’ 'ACTION_SETUP_VEHICLE_PRODUCTION' is not a member of 'model::ActionType' и т.п. Это не первая версия алгоритма, ранее всё копилилось. Ща не могу отправить даже стратегию из быстрого старта.

11.11.2017 14:13:07
WhiteCrow

WhiteCrow

Яндекс

Daneel

Daneel

БГУИР

Добрый день. У меня возникла проблема. Не могу отослать решение на c++14. Ошибка компиляции. ‘ACTION_ROTATE’ is not a member of ‘model::ActionType’ ‘ACTION_SETUP_VEHICLE_PRODUCTION’ is not a member of ‘model::ActionType’ и т.п. Это не первая версия алгоритма, ранее всё копилилось. Ща не могу отправить даже стратегию из быстрого старта.

Убери ACTION_ из идентификатора действия :) И, возможно, стоит скачать свежий языковой пакет.

11.11.2017 14:27:47
third112
GreenHorsy

GreenHorsy

Таганрог

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

У меня та же штука в D-7. Стер Overload -работает. Но это не по правилам - править можно только свою стратегию.

11.11.2017 14:33:32
third112

У вас косяк в пакете под паскаль в FacilityControl.pas Ругается на эту строчку constructor TFacility.Create(const facility: TFacility); overload; Я в принципе локально у себя поправил. Ранер успешно запускается и конектится к эмулятору, но не уверен будет ли работать оно у вас

У меня та же штука в D-7. Стер Overload -работает. Но это не по правилам - править можно только свою стратегию.

11.11.2017 14:35:40
third112

У меня та же штука в D-7. Стер Overload -работает. Но это не по правилам - править можно только свою стратегию.

Извините. Попал не на то сообщение…

11.11.2017 14:36:15
Daneel

Daneel

БГУИР

WhiteCrow

WhiteCrow

Яндекс

Убери ACTION_ из идентификатора действия :) И, возможно, стоит скачать свежий языковой пакет.

Благодарю) Заметил, что поставили enum class, но не заметил, что префикс убрали)

11.11.2017 14:42:18
olsh

olsh

Архангельск

olsh

olsh

Архангельск

Опять непонятно, какую версию C# можно использовать? Если более поздней , то получается можно использовать хоть C# 7.2, но ведь это не так? https://github.com/dotnet/roslyn/wiki/NuGet-packages#versioning

Отвечу сам себе. На сервере компилируется с Roslyn 1.3.1.60621 Поэтому можно использовать только C# 6.0

12.11.2017 3:10:47
kuzmalex

kuzmalex

pekach dev

Собираю джарник из исходников находящихся в пакете, скриптом, находящимся в пакете. При попытке отослать решение получаю ошибку: Поле не может содержать бинарные данные. В чем может быть проблема?

12.11.2017 10:02:34
Sanda

Sanda

JetBrains

kuzmalex

kuzmalex

pekach dev

Собираю джарник из исходников находящихся в пакете, скриптом, находящимся в пакете. При попытке отослать решение получаю ошибку: Поле не может содержать бинарные данные. В чем может быть проблема?

Отсылать на сервер надо не jar, а исходники.

12.11.2017 10:22:23
kuzmalex

kuzmalex

pekach dev

Sanda

Sanda

JetBrains

Отсылать на сервер надо не jar, а исходники.

спасибо, разобрался

12.11.2017 10:59:09
Starcraft-m8

Starcraft-m8

Минск

Как пользоваться пакетом для Java? В какой среде компилировать??

12.11.2017 12:00:02
Allpowerful

Allpowerful

Славянский Университет

Nerumb

Nerumb

Альфа-Банк

Когда будет доступен Kotlin ?

Да ты и так можешь на нём писать. Это же очевидно.

12.11.2017 12:37:28
Nerumb

Nerumb

Альфа-Банк

Allpowerful

Allpowerful

Славянский Университет

Да ты и так можешь на нём писать. Это же очевидно.

И отослать стратегию на нем тоже конечно уже можно

12.11.2017 12:40:36
Allpowerful

Allpowerful

Славянский Университет

Nerumb

Nerumb

Альфа-Банк

И отослать стратегию на нем тоже конечно уже можно

В окне для отсылки стратегии нет возможности выбрать Котлин. Не знаю, примут ли его, если отошлёшь, как Java

12.11.2017 12:58:53
Nerumb

Nerumb

Альфа-Банк

Allpowerful

Allpowerful

Славянский Университет

В окне для отсылки стратегии нет возможности выбрать Котлин. Не знаю, примут ли его, если отошлёшь, как Java

В этом все и дело что не примут. Изначальный вопрос был про то, когда появится такая возможность.

12.11.2017 13:01:09
Scarlet

После обновления языкового пакета С++ перестало компилироваться. У меня MS Visual C++ 2010 Express. Ругается на первый встречный enum: “error C2332: ‘enum’ : missing tag name”, “error C2236: unexpected ‘class’ ‘model::ActionType’. Did you forget a ‘;’?”, и т.д.

12.11.2017 22:59:21
SladeThe

SladeThe

Команда Russian AI Cup

После обновления языкового пакета С++ перестало компилироваться. У меня MS Visual C++ 2010 Express. Ругается на первый встречный enum: “error C2332: ‘enum’ : missing tag name”, “error C2236: unexpected ‘class’ ‘model::ActionType’. Did you forget a ‘;’?”, и т.д.

Конструкция “enum class” была добавлена в C++11. Видимо, VS 2010 только частично поддерживает этот стандарт.

12.11.2017 23:07:55
Scarlet
SladeThe

SladeThe

Команда Russian AI Cup

Конструкция “enum class” была добавлена в C++11. Видимо, VS 2010 только частично поддерживает этот стандарт.

Так у вас всё же работало, и все предыдущие годы, и пару дней назад. А теперь перестало. Что такого прям изменилось в С++ за эту неделю?

12.11.2017 23:41:30
SladeThe

SladeThe

Команда Russian AI Cup

Так у вас всё же работало, и все предыдущие годы, и пару дней назад. А теперь перестало. Что такого прям изменилось в С++ за эту неделю?

Так это и изменилось :)

Раньше были просто enum, теперь enum class.

Прогрессивное сообщество требует использования новых фишек языка.

12.11.2017 23:59:07
alkozel

alkozel

Калужский филиал ГУ СДА при Спецстрое России

Доброе утро. Скачал новый языковой пакет для Java и раннер. В итоге при запуске вылезает ошибка Connected to the target VM, address: ‘127.0.0.1:53737’, transport: ‘socket’ Exception in thread “main” java.io.IOException: Can’t read 4 bytes from input stream. at RemoteProcessClient.readBytes(RemoteProcessClient.java:470) at RemoteProcessClient.readInt(RemoteProcessClient.java:400) at RemoteProcessClient.readGameContextMessage(RemoteProcessClient.java:81) at Runner.run(Runner.java:24) at Runner.main(Runner.java:10) Disconnected from the target VM, address: ‘127.0.0.1:53737’, transport: ‘socket’

Process finished with exit code 1

13.11.2017 7:03:13
alkozel

alkozel

Калужский филиал ГУ СДА при Спецстрое России

alkozel

alkozel

Калужский филиал ГУ СДА при Спецстрое России

Доброе утро. Скачал новый языковой пакет для Java и раннер. В итоге при запуске вылезает ошибка Connected to the target VM, address: ‘127.0.0.1:53737’, transport: ‘socket’ Exception in thread “main” java.io.IOException: Can’t read 4 bytes from input stream. at RemoteProcessClient.readBytes(RemoteProcessClient.java:470) at RemoteProcessClient.readInt(RemoteProcessClient.java:400) at RemoteProcessClient.readGameContextMessage(RemoteProcessClient.java:81) at Runner.run(Runner.java:24) at Runner.main(Runner.java:10) Disconnected from the target VM, address: ‘127.0.0.1:53737’, transport: ‘socket’ …

Разобрался, не проснулся еще толком))

13.11.2017 7:29:35
Scarlet
SladeThe

SladeThe

Команда Russian AI Cup

Так это и изменилось :) Раньше были просто enum, теперь enum class. Прогрессивное сообщество требует использования новых фишек языка.

Прогрессивное? Шесть лет прогрессировали? Понимаю, потребовали бы что-то из С++17, а тут “фишка” всего лишь в ограничении видимости и запрету сравнивать тёплое с мягким, за потерю обратной совместимости. Ладно, нытьё это, это ж бета была, просто теперь тратить время на поиск новой IDE/компилятора вместо конкурса.

13.11.2017 9:24:19
VexfxjC

VexfxjC

БГТУ «Военмех»

в языковом пакете С++ в классе Move отсутствует функционал для масштабирования, хотя в ActionType он есть

13.11.2017 9:54:54
VexfxjC

VexfxjC

БГТУ «Военмех»

VexfxjC

VexfxjC

БГТУ «Военмех»

в языковом пакете С++ в классе Move отсутствует функционал для масштабирования, хотя в ActionType он есть

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

13.11.2017 9:56:10
AlexKol

AlexKol

BB

VexfxjC

VexfxjC

БГТУ «Военмех»

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

В тот же пень въехал пару часов назад)

13.11.2017 10:14:58
AlexKol

AlexKol

BB

В пакете C# команда Assign не работает. Выделил группу через ClearAndSelect. Выполнил на следующий тик: (перед этим проверил, да действительно выделено 100 юнитов) move.Action = ActionType.Assign; move.Group = index; На след тик, выделения нет, группы нет.

13.11.2017 11:18:45
VexfxjC

VexfxjC

БГТУ «Военмех»

AlexKol

AlexKol

BB

В тот же пень въехал пару часов назад)

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

13.11.2017 11:22:08
AlexKol

AlexKol

BB

VexfxjC

VexfxjC

БГТУ «Военмех»

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

Я за выходные почти дописал, и тут ядерный удар ввели, начал всё заново, теперь какаха не актуальна.

13.11.2017 11:24:46
VexfxjC

VexfxjC

БГТУ «Военмех»

AlexKol

AlexKol

BB

Я за выходные почти дописал, и тут ядерный удар ввели, начал всё заново, теперь какаха не актуальна.

да вот тоже думаю об этом ударе… если ударить в центр какахи, то она развалится )

13.11.2017 11:33:50
third112

Ошибку в Паскале так и не исправили!

13.11.2017 20:25:38
Alir

Alir

American University of Armenia

AlexKol

AlexKol

BB

В пакете C# команда Assign не работает. Выделил группу через ClearAndSelect. Выполнил на следующий тик: (перед этим проверил, да действительно выделено 100 юнитов) move.Action = ActionType.Assign; move.Group = index; На след тик, выделения нет, группы нет.

аналогичная проблема в C++

13.11.2017 21:39:30
AlexKol

AlexKol

BB

Alir

Alir

American University of Armenia

аналогичная проблема в C++

В C# кстати починили вроде.

13.11.2017 22:05:44
Edmon_wales
alkozel

alkozel

Калужский филиал ГУ СДА при Спецстрое России

Разобрался, не проснулся еще толком))

Столкнулся с той же проблемой не подскажете в чём дело?

13.11.2017 22:54:29
Scarlet

Объясните, пожалуйста, как теперь пользоваться нормально этим enum class. Раньше я мог создать какой-нибудь массив veh_info[VEHICLE_COUNT] заносить актуальную инфу по отрядам и пользоваться ею, типа, veh_info[VEHICLE_TANK], крутить циклы, и всё было здорово, для этого enum и задуман - и размер был и правильные индексы значений. Теперь, даже заменив всё на VehicleType::_COUNT, VehicleType::TANK и прочее, компилятор ругается. В одном месте нужен static_cast, а во всех остальных приходится ставить (int)… это такое “улучшение”? Из того что я нашёл: 1) не запрещается использовать старые enum, 2) для ограничений видимости можноиспользовать namespace или struct, 3) какой смысл теперь в присваиваемых значениях и, в частности, COUNT если теперь ими не воспользоваться как числом? На мой взгляд, вы уж извините, это бездумное нововведение, нарушевшее логику этих enum’ов, которая изначально была заложена. А enum class нужен в каких-то других применениях.

14.11.2017 1:39:30
ardt2

Объясните, пожалуйста, как теперь пользоваться нормально этим enum class. Раньше я мог создать какой-нибудь массив veh_info[ VEHICLE_COUNT ] заносить актуальную инфу по отрядам и пользоваться ею, типа, veh_info[VEHICLE_TANK], крутить циклы, и всё было здорово, для этого enum и задуман - и размер был и правильные индексы значений. Теперь, даже заменив всё на VehicleType::_COUNT, VehicleType::TANK и прочее, компилятор ругается. В одном месте нужен static_cast, а во всех остальных приходится ставить (int)… это такое “улучшение”? Из того что я нашёл: 1) не запрещается использовать старые enum, 2) для ограничений видимости можноиспользовать namespace или struct, 3) какой смысл теперь в присваиваемых значениях и, в частности, …

Может такая конструкция поможет? class int2 { public: int S = -1; int2(ClassesEnums s) : S(static_cast(s)) {}

         operator int & () { return S; }
    };
    void Foo()
    {
       for (int2 i = ClassesEnums::Unknown; i < 10; i++)
         ;
    }

14.11.2017 2:36:13
dimir

dimir

СПбГЭТУ (ЛЭТИ)

Объясните, пожалуйста, как теперь пользоваться нормально этим enum class. Раньше я мог создать какой-нибудь массив veh_info[ VEHICLE_COUNT ] заносить актуальную инфу по отрядам и пользоваться ею, типа, veh_info[VEHICLE_TANK], крутить циклы, и всё было здорово, для этого enum и задуман - и размер был и правильные индексы значений. Теперь, даже заменив всё на VehicleType::_COUNT, VehicleType::TANK и прочее, компилятор ругается. В одном месте нужен static_cast, а во всех остальных приходится ставить (int)… это такое “улучшение”? Из того что я нашёл: 1) не запрещается использовать старые enum, 2) для ограничений видимости можноиспользовать namespace или struct, 3) какой смысл теперь в присваиваемых значениях и, в частности, …

static_cast(VehicleType::_COUNT_)

14.11.2017 11:52:18
dimir

dimir

СПбГЭТУ (ЛЭТИ)

dimir

dimir

СПбГЭТУ (ЛЭТИ)

static_cast(VehicleType::_COUNT_)

static_cast“<”int“>”(VehicleType::_COUNT_)

14.11.2017 11:53:14
dimir

dimir

СПбГЭТУ (ЛЭТИ)

Объясните, пожалуйста, как теперь пользоваться нормально этим enum class. Раньше я мог создать какой-нибудь массив veh_info[ VEHICLE_COUNT ] заносить актуальную инфу по отрядам и пользоваться ею, типа, veh_info[VEHICLE_TANK], крутить циклы, и всё было здорово, для этого enum и задуман - и размер был и правильные индексы значений. Теперь, даже заменив всё на VehicleType::_COUNT, VehicleType::TANK и прочее, компилятор ругается. В одном месте нужен static_cast, а во всех остальных приходится ставить (int)… это такое “улучшение”? Из того что я нашёл: 1) не запрещается использовать старые enum, 2) для ограничений видимости можноиспользовать namespace или struct, 3) какой смысл теперь в присваиваемых значениях и, в частности, …

Упс, недочитал комментарий, прошу прощения =)

14.11.2017 11:54:37
dimir

dimir

СПбГЭТУ (ЛЭТИ)

Объясните, пожалуйста, как теперь пользоваться нормально этим enum class. Раньше я мог создать какой-нибудь массив veh_info[ VEHICLE_COUNT ] заносить актуальную инфу по отрядам и пользоваться ею, типа, veh_info[VEHICLE_TANK], крутить циклы, и всё было здорово, для этого enum и задуман - и размер был и правильные индексы значений. Теперь, даже заменив всё на VehicleType::_COUNT, VehicleType::TANK и прочее, компилятор ругается. В одном месте нужен static_cast, а во всех остальных приходится ставить (int)… это такое “улучшение”? Из того что я нашёл: 1) не запрещается использовать старые enum, 2) для ограничений видимости можноиспользовать namespace или struct, 3) какой смысл теперь в присваиваемых значениях и, в частности, …

Через шаблоны может ? template int toInt(const T& t){ return static_cast(t); } типа такого будет работать ?

14.11.2017 11:56:51
dimir

dimir

СПбГЭТУ (ЛЭТИ)

dimir

dimir

СПбГЭТУ (ЛЭТИ)

Через шаблоны может ? template int toInt(const T& t){ return static_cast(t); } типа такого будет работать ?

угловые скобки в static_cast режет

14.11.2017 11:57:18
xelmed91

Подскажите пожалуйста, планируется ли добавление поддержки TensorFlow?

14.11.2017 12:56:28
Scarlet
dimir

dimir

СПбГЭТУ (ЛЭТИ)

Через шаблоны может ? template int toInt(const T& t){ return static_cast(t); } типа такого будет работать ?

Спасибо, конечно, за вариант, но чем .toInt() лучше (int)? Шило на мыло. Всё равно использование перечисления с присвоенными значениеми как класс - это не правильный подход, потому что с классом затрудняется доступ к значениям. Проще уж завести свой enum с го и гейшами, какой был изначально, а всякие касты и приведения использовать только при взаимодействии этих enum’ов.

14.11.2017 13:06:30
ardt2

Спасибо, конечно, за вариант, но чем .toInt() лучше (int)? Шило на мыло. Всё равно использование перечисления с присвоенными значениеми как класс - это не правильный подход, потому что с классом затрудняется доступ к значениям. Проще уж завести свой enum с го и гейшами, какой был изначально, а всякие касты и приведения использовать только при взаимодействии этих enum’ов.

Можно и свой enum сделать, но я бы написал преобразование

enum class ClassesEnums
{
    Unknown = -1, First, Next, Range,
} ce; // const & ce;
enum class ClassesEnums2
{
    Unknown = -1, First, Next, Range,
} ce2;


class int1
{
    private:
        int I1;

    private:
        int1();

    public:
        int1(int i) : I1(i) {}
        int1(ClassesEnums ce) : I1(static_cast<int>(ce)) {}
        int1(ClassesEnums2 ce) : I1(static_cast<int>(ce)) {}

        operator int & () { return I1; } // explicit

        bool operator < (int1 r) const { return I1 < r; }
};

inline bool operator < (ClassesEnums l, int1 r)
{
    return static_cast<int>(l) < r; //
}

const int1 c = ClassesEnums::Next;

void Foo()
{
    for (int1 i = ClassesEnums::First; i < ClassesEnums::Range; i++)
        ;
    bool b = ClassesEnums::Range < 10;
    ce = ClassesEnums::Next;       
    ce = static_cast<ClassesEnums>(10); // Не надо так, хотя и можно
    int1 i = ce;
}

14.11.2017 14:34:11
ardt2

Спасибо, конечно, за вариант, но чем .toInt() лучше (int)? Шило на мыло. Всё равно использование перечисления с присвоенными значениеми как класс - это не правильный подход, потому что с классом затрудняется доступ к значениям. Проще уж завести свой enum с го и гейшами, какой был изначально, а всякие касты и приведения использовать только при взаимодействии этих enum’ов.

А ещё лучше использовать std для этого:

vРаньше я мог создать какой-нибудь массив veh_info[ VEHICLE_COUNT ] заносить актуальную инфу по отрядам и пользоваться ею, типа, veh_info[VEHICLE_TANK], крутить циклы, и всё было здорово

enum class ClassesEnums2b
{
    Unknown = -1, First, Next, Range,
} ;

class Infos {};
using namespace std;
unordered_map<ClassesEnums2b, Infos> Info
    = { pair<ClassesEnums2b, Infos>(ClassesEnums2b::First,Infos()),
        pair<ClassesEnums2b, Infos>(ClassesEnums2b::Next,Infos()), };
vector<Infos> Info2 =  { Infos(), Infos(), }; // std::vector
vector<ClassesEnums2b> const CEs = { ClassesEnums2b::First, ClassesEnums2b::Next};
void Foo2b()
{
    ClassesEnums2b ClassesEnums2b;

    for (auto & ce : CEs)
    {
        ClassesEnums2b = ce;
        Infos i = Info[ce];
    }

    // GetInfoByType(ClassesEnums2b const type)
    switch (ClassesEnums2b) // type
    {
        case ClassesEnums2b::First:
            Info[ClassesEnums2b::First];
            break;
        // ...
        default:
            ; // throw const & exceptionbytype // шаблон
    }

    for (auto & info : Info2)
    {
        info;
    }
}

Все-таки C++ такая няшечка…

14.11.2017 15:57:53
13human

13human

Квартплата 24

Между прочим, решения на Скале уже принимаются. Пакет https://github.com/13human/scala-cgdk-2017

14.11.2017 19:33:27
Clomance

Clomance

МБОУ Гимназия №39

Будет ли доступен язык Rust когда-нибудь?)

14.11.2017 19:53:10
ivanodiit

ivanodiit

Днепропетровск

Добавьте пожалуйста Go. Топик с обсуждениями http://russianaicup.ru/forum/index.php?topic=786.0 Если не промахнулся репа https://github.com/1stborn/go-codewars/

14.11.2017 19:58:33
Scarlet

А ещё лучше использовать std для этого: enum class ClassesEnums2b { Unknown = -1, First, Next, Range, } ;

class Infos {}; using namespace std; unordered_map<ClassesEnums2b, Infos> Info = { pair<ClassesEnums2b, Infos>(ClassesEnums2b::First,Infos()), pair<ClassesEnums2b, Infos>(ClassesEnums2b::Next,Infos()), }; vector Info2 = { Infos(), Infos(), }; // std::vector vector const CEs = { ClassesEnums2b::First, ClassesEnums2b::Next}; void Foo2b() { ClassesEnums2b ClassesEnums2b;

for (auto & ce : CEs)
{
    ClassesEnums2b = ce;
    Infos i = Info[ce];
}

// GetInfoByType(ClassesEnums2b const type)
switch (ClassesEnums2b) // type
{
    case ClassesEnums2b::First:
        Info[ClassesEnums2b::First];
        break;
    // ...
    default:
        ; // throw const & exceptionbytype // шаблон
}

for (auto & info : Info2)
{
    info;
}

} …

Ох уж эта уличная магия. Таки можно забить гвоздь резиновым молотком. Наверное, стоит воспользоваться, спасибо. Я, правда, так толком и не понял, чем мешал нормальный.

14.11.2017 21:10:47
brambulet

brambulet

Москва

А где swift??? :-o

15.11.2017 21:10:32
imsohate

imsohate

Санкт-Петербург

Только что потратил 2 часа своей жизни впустую и решил откомментировать здесь, чтобы другие не совершали ошибок. Пакет python2. Не используйте модуль enum. Он не работает. Как я понял, проблемный модуль. Также вопрос к администрации, там непонятное сообщение об ошибке верификации:

“Ваша стратегия «упала» в короткой проверочной игре 2x500. При инициализации игрока возникло непредвиденное исключение.” Можно ли сделать чуть информативнее?

16.11.2017 1:01:37
MrDindows

MrDindows

Looksery

В главных призах - яблокотехника, а поддержки MAC OS для C++ нет? Грустно =(

16.11.2017 1:16:54
MrDindows

MrDindows

Looksery

MrDindows

MrDindows

Looksery

В главных призах - яблокотехника, а поддержки MAC OS для C++ нет? Грустно =(

Окей, заменяем -D_LINUX на -D_DARWIN, убираем -static, и все отлично работает, в том числе и через clang. Вопрос только в том, почему изначально не добавить такой отдельный скрипт под мак?

16.11.2017 10:40:12
SladeThe

SladeThe

Команда Russian AI Cup

imsohate

imsohate

Санкт-Петербург

Только что потратил 2 часа своей жизни впустую и решил откомментировать здесь, чтобы другие не совершали ошибок. Пакет python2. Не используйте модуль enum. Он не работает. Как я понял, проблемный модуль. Также вопрос к администрации, там непонятное сообщение об ошибке верификации: “Ваша стратегия «упала» в короткой проверочной игре 2x500. При инициализации игрока возникло непредвиденное исключение.” Можно ли сделать чуть информативнее?

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

16.11.2017 19:16:59
LoOny

LoOny

MAIResearchGroup

SladeThe

SladeThe

Команда Russian AI Cup

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

Что насчет JS? Я смотрю и наработки есть у человека, а пакета все нет и нет

16.11.2017 23:27:58
SladeThe

SladeThe

Команда Russian AI Cup

LoOny

LoOny

MAIResearchGroup

Что насчет JS? Я смотрю и наработки есть у человека, а пакета все нет и нет

В этом году заявлено очень много пользовательских пакетов. Работаем, но каждый из них требует времени на проверку и внедрение.

17.11.2017 0:05:14
lukomskiy

Мерзаяновец верні рейтінг!1!1!11

17.11.2017 11:54:20
GS

GS

Тюмень

У меня та же штука в D-7. Стер Overload -работает. Но это не по правилам - править можно только свою стратегию.

Это небольшая несовместимость только с делфи, на freepascal всё нормально компилируется. В любом случае на сервере паскаль-код компилируется именно фрипаскалем, так что у себя локально правим и всё ок.

17.11.2017 21:09:07
third112
GS

GS

Тюмень

Это небольшая несовместимость только с делфи, на freepascal всё нормально компилируется. В любом случае на сервере паскаль-код компилируется именно фрипаскалем, так что у себя локально правим и всё ок.

Один случай несовместимости делфи и freepascal обнаружен, могут быть и другие. Получается, что и у себя нужно работать на freepascal. А если привык в делфи?

17.11.2017 21:31:15
third112

Один случай несовместимости делфи и freepascal обнаружен, могут быть и другие. Получается, что и у себя нужно работать на freepascal. А если привык в делфи?

Я не понимаю почему нельзя сделать еще один языковый пакет для дельфи? Нужно 1 исправление, а скрипт для компиляции уже есть. Странно, что его приложили не попробовав!

17.11.2017 21:33:56
GS

GS

Тюмень

Один случай несовместимости делфи и freepascal обнаружен, могут быть и другие. Получается, что и у себя нужно работать на freepascal. А если привык в делфи?

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

17.11.2017 21:47:09
SladeThe

SladeThe

Команда Russian AI Cup

Я не понимаю почему нельзя сделать еще один языковый пакет для дельфи? Нужно 1 исправление, а скрипт для компиляции уже есть. Странно, что его приложили не попробовав!

Пакет Pascal на Github теперь компилируется и Free Pascal, и Delphi. На сайте обновим позже. Но мы всё равно не можем гарантировать, что какие-то элементы языка, которые вы заиспользуете в стратегии, будут компилироваться везде. Перед тем, как отправить стратегию, стоит проверить компиляцию именно Free Pascal.

17.11.2017 22:47:10
third112
GS

GS

Тюмень

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

В свою очередь организаторы турнира также ясно указали, что на паскале принимаются стратегии, совместимые и с компилятором дельфи, приложив в пакет файл compile-dpr.bat, где использован dcc32. Я привык к дельфи и переход на другой диалект языка потребует дополнительных затрат времени, которого на соревнования отведено и так не много.

18.11.2017 9:17:10
mixei4

mixei4

КГУ

В свою очередь организаторы турнира также ясно указали, что на паскале принимаются стратегии, совместимые и с компилятором дельфи, приложив в пакет файл compile-dpr.bat, где использован dcc32. Я привык к дельфи и переход на другой диалект языка потребует дополнительных затрат времени, которого на соревнования отведено и так не много.

Организаторы ясно указали одно - Free Pascal 3.0+ [Delphi mode]

Всё остальное Ваши выдумки.

Организаоры привыкли к free pascal и поддержка всех версий паскаля потребует доп затрат…

18.11.2017 9:43:22
third112
mixei4

mixei4

КГУ

Организаторы ясно указали одно - Free Pascal 3.0+ [Delphi mode] Всё остальное Ваши выдумки. Организаоры привыкли к free pascal и поддержка всех версий паскаля потребует доп затрат…

Файл compile-dpr.bat моя выдумка?

18.11.2017 9:56:06
mixei4

mixei4

КГУ

Файл compile-dpr.bat моя выдумка?

  1. То, что в пакете есть какой-то файл ничего не означает. При этом Вам никто не запрещает писать на Delphi, но на сервере стратегия может не скопилироваться.

  2. Компиляцию в Delphi уже починили.

18.11.2017 10:04:56
GS

GS

Тюмень

Файл compile-dpr.bat моя выдумка?

Еще раз внимательно читаем официальный список официально поддерживаемых языков. Для pascal указан только Free Pascal 3.0+ [Delphi mode]. Где организаторы указали, что есть поддержка делфи? Файл compile-dpr.bat приложен в SDK исключительно для удобства отладки, и не более того. И кстати, версии делфи тоже не полностью совместимы друг с другом, например код написанный в delphi 10.2 Tokyo не удастся скомпилировать в delphi 7, вы об этом знаете?

Предлагаю вам вместо безапелляционных требований либо использовать то, что предоставляют организаторы, либо самому подготовить SDK для делфи. Именно так поступают поклонники других языков (например Kotlin), не правда ли? Плюс с вас делфовская лицензия.

18.11.2017 10:08:35
third112
GS

GS

Тюмень

Еще раз внимательно читаем официальный список официально поддерживаемых языков. Для pascal указан только Free Pascal 3.0+ [Delphi mode]. Где организаторы указали, что есть поддержка делфи? Файл compile-dpr.bat приложен в SDK исключительно для удобства отладки, и не более того. И кстати, версии делфи тоже не полностью совместимы друг с другом, например код написанный в delphi 10.2 Tokyo не удастся скомпилировать в delphi 7, вы об этом знаете? …

А, так у вас лицензии нету! Так бы сразу и сказали, вместо того чтобы городить несуразные отговорки. И где это я высказывал безапелляционные требования? Говорить с клиентом столь раздраженным тоном - не лучший бизнес. Так у вас все участники разбежаться могут.

18.11.2017 10:40:44
GS

GS

Тюмень

А, так у вас лицензии нету! Так бы сразу и сказали, вместо того чтобы городить несуразные отговорки. И где это я высказывал безапелляционные требования? Говорить с клиентом столь раздраженным тоном - не лучший бизнес. Так у вас все участники разбежаться могут.

Лично у меня есть делфовские лицензии на все версии. И кстати, с чего вы взяли, что я отношусь к организаторам турнира? Я обычный участник.

18.11.2017 10:49:07
third112
GS

GS

Тюмень

Лично у меня есть делфовские лицензии на все версии. И кстати, с чего вы взяли, что я отношусь к организаторам турнира? Я обычный участник.

Говорили так, будто Вы их адвокат. Но раз Вы не организатор, подожду официального ответа от организаторов.

18.11.2017 10:56:07
doratio

doratio

Казань

phts

phts

Гродно

Javascript добавьте, пожалуйста

согласен

18.11.2017 12:10:27
mixei4

mixei4

КГУ

Говорили так, будто Вы их адвокат. Но раз Вы не организатор, подожду официального ответа от организаторов.

Да Вам уже и официально ответили.

“Пакет Pascal на Github теперь компилируется и Free Pascal, и Delphi. На сайте обновим позже. Но мы всё равно не можем гарантировать, что какие-то элементы языка, которые вы заиспользуете в стратегии, будут компилироваться везде. Перед тем, как отправить стратегию, стоит проверить компиляцию именно Free Pascal.”

18.11.2017 21:54:34
third112
mixei4

mixei4

КГУ

Да Вам уже и официально ответили. “Пакет Pascal на Github теперь компилируется и Free Pascal, и Delphi. На сайте обновим позже. Но мы всё равно не можем гарантировать, что какие-то элементы языка, которые вы заиспользуете в стратегии, будут компилироваться везде. Перед тем, как отправить стратегию, стоит проверить компиляцию именно Free Pascal.”

Видимо, GS угадал: дело в лицензии. Так бы сразу и сказали, чем темнить, Хотя, конечно, странное крохоборство для такой большой компании: цена лицензии - копейки.

19.11.2017 13:54:08
MrMorozis

MrMorozis

Метран

Добрый день, дамы и господа.

Вопрос к организаторам по пакету для Python3.

Заметил частые падения стратегии по превышению ограничения времени при игре против некоторых игроков. Что бы убедиться в отсутствии багов в моей программе, отправил стратегию с пустым методом move и создал несколько игр. Результаты такие:

44333 - 112.77 sec

44203 - 132.02 sec

44201 - 120.15 sec

Это для стратегии, где

def move(...):
    pass

Прогон в repeatere показывает, что практически каждый тик в world.vehicle_updates появляются назначения групп для 300 - 400 ВРАЖЕСКИХ юнитов (в виде стандартного списка python для каждого юнита). Это приводит к значительному потреблению времени стратегией (даже пустой).

Такое поведение считаю ошибкой. Предлагаю не присылать в vehicle_updates информацию о назначении групп противником.

19.11.2017 14:13:32
GS

GS

Тюмень

Видимо, GS угадал: дело в лицензии. Так бы сразу и сказали, чем темнить, Хотя, конечно, странное крохоборство для такой большой компании: цена лицензии - копейки.

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

19.11.2017 15:41:21
third112
GS

GS

Тюмень

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

Было предложено тестировать софт. При тестировании выявился баг и непонятка в правилах. Это обычно устраняют и за нахождения благодарят, а не кричат…

19.11.2017 17:26:48
AlexKol

AlexKol

BB

Просмотрел большинство стратегий тех кто разрабатывает на C#. Очень много упавших стратегий, отсюда напрашивается вопрос, что нет так? Локально свою проверяю, работает без задержек. По памяти проблем нет, выкладываю стратегию все игры падают. Так как ошибок нет, то получается по времени. Но там нечему уже тормозить. И судят по всему это проблемы на сервере, раз у много кого постоянно валится.

19.11.2017 22:02:14
mixei4

mixei4

КГУ

AlexKol

AlexKol

BB

Просмотрел большинство стратегий тех кто разрабатывает на C#. Очень много упавших стратегий, отсюда напрашивается вопрос, что нет так? Локально свою проверяю, работает без задержек. По памяти проблем нет, выкладываю стратегию все игры падают. Так как ошибок нет, то получается по времени. Но там нечему уже тормозить. И судят по всему это проблемы на сервере, раз у много кого постоянно валится.

Не первый раз же участвуешь. Если кликнуть на иконку языка на странице игры, то показывается проблема. В частности у тебя - Program failed to terminate within 210.00 sec

19.11.2017 22:13:14
Zabidon

Языковой пакет для Python имеет слишком скудное API (в нём отсутствует практически все из главы 4 документации), что делает невозможным его использование. Или я чего-то не понял.

20.11.2017 1:16:28
SladeThe

SladeThe

Команда Russian AI Cup

Языковой пакет для Python имеет слишком скудное API (в нём отсутствует практически все из главы 4 документации), что делает невозможным его использование. Или я чего-то не понял.

В нём есть абсолютно всё, что и в других пакетах. Вместо get-теров нужно получать данные непосредственно из полей, например world.getTickIndex() в Java становится world.tick_index в Python.

20.11.2017 1:48:39
AlexKol

AlexKol

BB

mixei4

mixei4

КГУ

Не первый раз же участвуешь. Если кликнуть на иконку языка на странице игры, то показывается проблема. В частности у тебя - Program failed to terminate within 210.00 sec

Не первый раз, но об этом не знал) Самый информативный ответ, теперь буду смотреть что именно случилось

20.11.2017 5:43:14
AlexKol

AlexKol

BB

SladeThe, а можно получить подробную информацию по тикам. Сколько каждый длился. Чтобы примерно понять где начать экномить.

20.11.2017 12:08:00
13human

13human

Квартплата 24

AlexKol

AlexKol

BB

SladeThe, а можно получить подробную информацию по тикам. Сколько каждый длился. Чтобы примерно понять где начать экномить.

+1

22.11.2017 21:24:32
Sanda

Sanda

JetBrains

AlexKol

AlexKol

BB

SladeThe, а можно получить подробную информацию по тикам. Сколько каждый длился. Чтобы примерно понять где начать экномить.

Можно засекать время в стратегии, выводить номера долгих тиков. Stdout, кажется, выводится на сайте там же, где потраченное время. Ну и заодно можно считать процент оставшегося времени и “оптимизировать” вычисления, если время на исходе.

23.11.2017 1:12:00
AlexKol

AlexKol

BB

Sanda

Sanda

JetBrains

Можно засекать время в стратегии, выводить номера долгих тиков. Stdout, кажется, выводится на сайте там же, где потраченное время. Ну и заодно можно считать процент оставшегося времени и “оптимизировать” вычисления, если время на исходе.

Я уже замеры у себя локально сделал. Нашел метод который половину времени отжирает из общего времени.

23.11.2017 7:47:23
udalov

udalov

JetBrains

Кстати, а есть причины вместо конкретной версии компилятора для каждого языка указывать “X.Y+”? Обычно во всех тестирующих системах версии компилятора и ключи компиляции даны явно. Если таких причин нет, укажите пожалуйста всю известную информацию явно. Спасибо!

23.11.2017 19:23:36