Охота за пасхальными яйцами
Бот найти яйцо, прежде чем кролик найдет яйцо. Бот счастлив.
обзор
Это испытание царя горы в честь Пасхи и традиции охоты за пасхальными яйцами!
Ваш бот видит два пространства в каждом направлении, включая диагонали, создавая вокруг себя квадрат 5х5, который вы можете видеть. Он ищет яйца, и тот, кто найдет больше всего яиц, победит!
Доска
Доска будет состоять из o
s, которые являются пасхальными яйцами, #
s, которые являются стенами, *
s, которые являются другими игроками, и s, которые являются пустыми местами.
- Это будет квадрат с длиной ребра
(number of entries) * 3
. - Он будет окружен стенами.
- Внутри стен будет ассортимент случайно расположенных прямых линий
#
, которые будут иметь произвольную длину от 2 до 10 включительно. Там будет(number of entries) * 3
из них. - Яйца будут размещены в случайном порядке. Их будет
(number of entries) * 4
, и они будут генерироваться только на пустых () квадратах.
- Для правильной работы процесса создания доски должно быть не менее 7 единиц.
Вот JSFiddle, который сгенерирует случайную доску для тестирования. Вот пример с (number of entries) = 7
:
#####################
# o ##
# # o ##
# #o ###### ##
###### # ##
## o # # ##
## o# #o# o o##
## #o # # o # #
## # o # # # #
## ## # # o # #
## # # o # # #
## # o # ## # # #
## # # # #
# o # ## # #
# o oo ##o #
#o ####### oo ## #
# # # #
# o o o# #
# o #### o o#
# #
#####################
После того, как доска сгенерирована, каждый игрок размещается на случайном квадрате (пустое место).
вход
Вы возьмете шесть строк ввода. Первые пять строк - это ваше поле зрения (пробелы за пределами поля будут обозначены X
, а среднее пространство всегда будет *
вами), а шестая строка будет пустой (сначала).
Выход
Вы выведете три строки. Во-первых, направление, в котором вы хотите двигаться:
1 2 3
8 YOU 4
7 6 5
(9 - нет, если вы не хотите двигаться), секунда, одна из A
ttack, C
ounter или N
othing (скоро это будет подробно объяснено), а в качестве строки thrid будет любая строка длиной до 1024 Это будет память вашего бота. Вы можете использовать его по своему усмотрению или оставить его пустым. Эта память станет шестой строкой ввода вашей программы при следующем запуске.
Все дальнейшие строки вывода игнорируются, и если есть только одна строка, вторая считается пустой.
перемещение
Следующий процесс используется, чтобы определить, куда вы переехали:
- Если при перемещении вы окажетесь в пустом месте (
), ваш игрок будет помещен в это пространство.
- Если вы окажетесь в стене (
#
), ваш ход игнорируется, и вы теряете свой ход. - Если вы попадете в egg (
o
) или player (*
), эта информация будет сохранена и будет использоваться после того, как все переехали.
После того, как все переехали, двусмысленности разрешаются.
Если в одном месте приземлились два игрока, происходит драка! Это где A
/ C
/ N
приходит играть. A
ttack бьет N
ничто (обычная атака), N
ничто бьет по C
аунтеру (вы ничего не можете противостоять), а C
ounter бьет по A
ttack (контратака). Игрок, выигравший этот бой, остается на своем поле, а игрок, проигравший, возвращается к исходному полю, на котором он начал. В случае ничьей оба игрока возвращаются туда, где они были.
Если проигравший или привязанный игрок возвращается туда, где он был, и там есть другой игрок, битва не происходит, и другой игрок также возвращается в исходное пространство. Если в этом пространстве есть другой игрок, этот игрок возвращается, и это продолжается до тех пор, пока все игроки не окажутся в разных местах.
Если на одном поле находятся три или более игроков, они все возвращаются на свои исходные позиции.
Если какой-либо игрок все еще стоит на яйце ...
- Если игрок выбрал
A
, яйцо уничтожено. - Если игрок выбрал
C
, ничего не происходит, и игрок возвращается к своему первоначальному пространству. - Если игрок выбрал
N
, игрок поднимает яйцо! Счет игрока увеличивается на единицу, и яйцо удаляется.
Языки
Вы можете использовать любой язык, который свободно доступен в Windows, OSX и Linux, чтобы обеспечить честность среди каждого участника. Если код не может быть свободно запущен, но его можно скомпилировать или упаковать в такой формат, пожалуйста, включите этот формат в свой ответ. В идеале, если вы можете скомпилировать свой код на более общий язык (например, CoffeeScript -> JavaScript), сделайте это.
счет
Ваш счет будет средним числом яиц, которые вы соберете из десяти пробежек. Пробег заканчивается, когда все яйца собраны или когда (number of entries * 25)
пройдены очереди. Я вручную позабочусь о том, чтобы можно было достать все яйца для каждой карты (постоянно генерируя карты, пока все яйца не будут доступны).
Табло
Табло будет добавлено, когда будут выполнены все следующие условия:
- Было подано как минимум семь действительных заявок с положительным или нулевым баллом (без оценок)
- С момента создания этого задания прошло не менее 48 часов (UTC 14:23)
Правила не изменятся в течение этого предсоревновательного периода, за исключением добавления пояснений, где правило было неясным. После того, как табло будет выставлено, здесь также будет размещена программа тестирования, чтобы вы могли проверить свои записи. Код тестирования для этого все еще находится в стадии разработки, но он воспроизводим и работает. Вот репозиторий GitHub.
9
, он никогда не сможет подвергнуться значимой атаке. Если другой игрок (B) выйдет на этот квадрат игроков и выиграет, A будет перемещен обратно на свой первоначальный квадрат (который такой же). Но теперь происходит столкновение, потому что там есть и А, и В, поэтому В должен вернуться на свою собственную клетку. Таким образом, результат не зависит от фактического боя, B всегда возвращается на начальную клетку, а A всегда остается на месте. Это позволило бы мне написать оба, которые могли бы помочь другому представлению, блокируя путь для всех остальных.