Что такое лучший линкор AI?


Броненосец!

еще в 2003 году (когда мне было 17), я соревновался в линкор AI соревнования кодирования. Несмотря на то, что я проиграл этот турнир, я получил много удовольствия и многому научился.

Теперь я хотел бы воскресить этот конкурс, в поисках лучшего линкора AI.

здесь фреймворк, теперь размещенный на Bitbucket.

победитель будет награжден +450 репутацию! в соревнования будут проводиться начиная с 17 ноября, 2009. Никакие записи или изменения после нулевого часа 17-го числа не будут приняты. (Центральное Стандартное Время) Отправляйте свои заявки раньше, чтобы вы не упустили свою возможность!

сохранить этот цель, пожалуйста, следуйте духу конкурса.

правила игры:

  1. игра будет играть на 10x10 сетка.
  2. каждый участник разместит каждый из 5 кораблей (длин 2, 3, 3, 4, 5) на их сетке.
  3. ни один корабль не может пересекаться, но они могут быть смежными.
  4. затем конкуренты по очереди стреляют одиночными выстрелами в своего противника.
    • вариация на игру позволяет стрелять несколько выстрелов за залп, по одному для каждого выжившего корабля.
  5. противник уведомит конкурента, если выстрел тонет, попадает или пропускает.
  6. игра заканчивается, когда все корабли одного игрока канули.

правила конкурса:

  1. дух конкурса заключается в том, чтобы найти лучший алгоритм линкора.
  2. все, что считается противоречащим духу соревнования, будет основанием для дисквалификации.
  3. вмешательство в оппонента противоречит духу соревнование.
  4. многопоточность может использоваться при следующих ограничениях:
    • не более одного потока может быть запущен, пока это не ваша очередь. (Хотя, любое количество потоков может находиться в "подвешенном" состоянии).
    • ни один поток не может работать с приоритетом, отличным от"Normal".
    • учитывая вышеуказанные два ограничения, вам будет гарантировано не менее 3 выделенных ядер процессора во время вашего хода.
  5. предел 1 секунды Процессорное время за игру отводится каждому участнику основного потока.
  6. уходит времени приводит к потере текущей игры.
  7. любое необработанное исключение приведет к потере текущей игры.
  8. доступ к сети и доступ к диску разрешен, но вы можете найти ограничения времени довольно высока. Тем не менее, было добавлено несколько методов настройки и демонтажа, чтобы облегчить временную нагрузку.
  9. код должен быть размещен на переполнение стека как ответ, или, если слишком большой, связанный.
  10. максимальный общий размер (несжатый) записи составляет 1 МБ.
  11. официально .Net 2.0 / 3.5 является единственным требованием к платформе.
  12. ваша запись должна реализовать интерфейс IBattleshipOpponent.

оценка:

  1. лучший 51 игра из 101 игры является победителем матча.
  2. все конкуренты будут играть в матче друг против друга, круговой стиль.
  3. лучшая половина участников будет играть в турнире двойного исключения, чтобы определить победителя. (Наименьшая степень двойки, которая больше или равна половине, на самом деле.)
  4. я буду использовать TournamentApi рамки для турнира.
  5. результаты будут опубликованы здесь.
  6. если вы отправляете более одной записи, только ваша лучшая запись имеет право на получение двойной элим.

удачи! Получайте удовольствие!


EDIT 1:
Спасибо освобожден, кто нашел ошибку в . Это было исправлено. Пожалуйста, загрузите обновленную версию фреймворка.

EDIT 2:
Поскольку существует значительный интерес к сохранению статистики на диске и т. д., Я добавил несколько несвоевременных событий настройки и разрыва, которые должны обеспечить необходимая функциональность. Это же полу-критическое изменение. То есть: интерфейс был изменен для добавления функций, но для них не требуется тело. Пожалуйста, загрузите обновленную версию фреймворка.

EDIT 3:
Исправлена Ошибка 1: GameWon и GameLost были вызваны только в случае тайм-аута.
Исправлена ошибка 2: Если двигатель был тайм-аут каждой игры, конкуренция никогда не закончится.
Пожалуйста, скачайте обновленная версия фреймворка.

EDIT 4:
Результаты Турнира:

25 315

25 ответов: