Что такое лучший линкор AI?
Броненосец!
еще в 2003 году (когда мне было 17), я соревновался в линкор AI соревнования кодирования. Несмотря на то, что я проиграл этот турнир, я получил много удовольствия и многому научился.
Теперь я хотел бы воскресить этот конкурс, в поисках лучшего линкора AI.
здесь фреймворк, теперь размещенный на Bitbucket.
победитель будет награжден +450 репутацию! в соревнования будут проводиться начиная с 17 ноября, 2009. Никакие записи или изменения после нулевого часа 17-го числа не будут приняты. (Центральное Стандартное Время) Отправляйте свои заявки раньше, чтобы вы не упустили свою возможность!
сохранить этот цель, пожалуйста, следуйте духу конкурса.
правила игры:
- игра будет играть на 10x10 сетка.
- каждый участник разместит каждый из 5 кораблей (длин 2, 3, 3, 4, 5) на их сетке.
- ни один корабль не может пересекаться, но они могут быть смежными.
- затем конкуренты по очереди стреляют одиночными выстрелами в своего противника.
- вариация на игру позволяет стрелять несколько выстрелов за залп, по одному для каждого выжившего корабля.
- противник уведомит конкурента, если выстрел тонет, попадает или пропускает.
- игра заканчивается, когда все корабли одного игрока канули.
правила конкурса:
- дух конкурса заключается в том, чтобы найти лучший алгоритм линкора.
- все, что считается противоречащим духу соревнования, будет основанием для дисквалификации.
- вмешательство в оппонента противоречит духу соревнование.
- многопоточность может использоваться при следующих ограничениях:
- не более одного потока может быть запущен, пока это не ваша очередь. (Хотя, любое количество потоков может находиться в "подвешенном" состоянии).
- ни один поток не может работать с приоритетом, отличным от"Normal".
- учитывая вышеуказанные два ограничения, вам будет гарантировано не менее 3 выделенных ядер процессора во время вашего хода.
- предел 1 секунды Процессорное время за игру отводится каждому участнику основного потока.
- уходит времени приводит к потере текущей игры.
- любое необработанное исключение приведет к потере текущей игры.
- доступ к сети и доступ к диску разрешен, но вы можете найти ограничения времени довольно высока. Тем не менее, было добавлено несколько методов настройки и демонтажа, чтобы облегчить временную нагрузку.
- код должен быть размещен на переполнение стека как ответ, или, если слишком большой, связанный.
- максимальный общий размер (несжатый) записи составляет 1 МБ.
- официально .Net 2.0 / 3.5 является единственным требованием к платформе.
- ваша запись должна реализовать интерфейс IBattleshipOpponent.
оценка:
- лучший 51 игра из 101 игры является победителем матча.
- все конкуренты будут играть в матче друг против друга, круговой стиль.
- лучшая половина участников будет играть в турнире двойного исключения, чтобы определить победителя. (Наименьшая степень двойки, которая больше или равна половине, на самом деле.)
- я буду использовать TournamentApi рамки для турнира.
- результаты будут опубликованы здесь.
- если вы отправляете более одной записи, только ваша лучшая запись имеет право на получение двойной элим.
удачи! Получайте удовольствие!
EDIT 1:
Спасибо освобожден, кто нашел ошибку в . Это было исправлено. Пожалуйста, загрузите обновленную версию фреймворка.
EDIT 2:
Поскольку существует значительный интерес к сохранению статистики на диске и т. д., Я добавил несколько несвоевременных событий настройки и разрыва, которые должны обеспечить необходимая функциональность. Это же полу-критическое изменение. То есть: интерфейс был изменен для добавления функций, но для них не требуется тело. Пожалуйста, загрузите обновленную версию фреймворка.
EDIT 3:
Исправлена Ошибка 1: GameWon
и GameLost
были вызваны только в случае тайм-аута.
Исправлена ошибка 2: Если двигатель был тайм-аут каждой игры, конкуренция никогда не закончится.
Пожалуйста, скачайте обновленная версия фреймворка.
EDIT 4:
Результаты Турнира: