Как мы узнали из IBM PC AT, YouTube (см. Видео) , Википедии (см. Статью) и Улицы Сезам:
Письмо H
является самой беспощадной буквой алфавита !
(Даже если на самом деле он состоит из двух элементов в кодовой странице 437. На самом деле, это даже БОЛЬШЕ беспощадно.)
Как инопланетяне в ... э-э ... инопланетянах , звери безжалостно преследуют всех, кто осмелится приблизиться к своим яйцам. Там нет рассуждений с ними. Вы должны раздавить их, если не погибнуть.
В этом сценарии мы предполагаем, что вы дошли до своей последней жизни, и вы встретили простых животных в местности без яиц (как на скриншоте Википедии). У вас нет цифровой клавиатуры, и вы можете двигаться только вверх / вниз / влево / вправо ... но звери, очевидно, имеют такую клавиатуру и могут перемещаться по диагонали в свой ход.
Ход движения Зверя среди его вариантов будет тот, который минимизирует расстояние от игрока. Если расстояния равны, то разрыв связи делается в пользу слева + вверх по сравнению справа + вниз, но вот матрица устранения неоднозначности, которая должна быть в явной форме ... наименьшее число для прерывания связи:
1 3 4
2 H 5
6 8 7
Зверь никогда не спит, но, к счастью, он немного медленнее, чем игрок. Они двигаются каждый второй ход (давая игроку преимущество, начиная чередование со второго хода). Они должны двигаться, если ход возможен, независимо от того, отводит ли он их от игрока.
Вы раздавите зверя, если вы двигаете поезд из подвижных стен, где он сидел в закрытой щели. Эти простые звери стоят 2 очка за голову.
вход
Пара целых чисел, указывающая размер карты в столбцах, а затем в строках.
Количество строк ввода, каждая из которых имеет размер столбца ... содержит либо сплошную стену (
#
), подвижную стену (~
), зверя (H
), игрока (O
) или просто пробел.Ввод будет U, D, L, R, указывающий на попытку игрока сделать ход ... или W, чтобы просто подождать. Обратите внимание, что попытка толкнуть подвижную стену, которая заблокирована, является законным вводом, это просто не приведет к каким-либо действиям.
Выход
aHHHH!
если звери убили игрока ... или ничего, если игрок выиграл без оставшихся зверейРезультат
(Примечание: для целей отладки и / или развлечения вы, вероятно, захотите выводить состояние на каждом шаге; но это слишком долго для публикации здесь.)
Разъяснения
Карты гарантированно ограничены сплошными стенами.
Порядок того, кто движется в очереди, имеет значение для результата. Таким образом: игрок всегда идет первым, затем звери получают порядок, основанный на их начальной позиции на карте, если вы перемещаетесь по экрану сверху вниз слева направо. (Зверь 1-й строки движется перед зверьком 2-й строки, и два зверя в одном ряду - это будет тот, чей номер столбца наименьший, который будет двигаться раньше другого)
По диагонали движущиеся звери могут перемещаться в любое открытое смежное диагональное пространство, независимо от того, требует ли оно сжатия между стенами.
Игрок может протолкнуть любое количество подвижных стен в линию при условии, что на другом конце есть место или зверь. Но попытка протолкнуть череду стен в Зверя, который не закреплен между стенами, рассматривает Зверя как стену и не позволяет двигаться.
Решение о движении Зверя во время хода зависит от местоположения игрока в начале хода. Его желаемая оптимизация «расстояния до игрока» - это расчет «по прямой линии». Любое приближение, которое дало бы тот же самый результат, который измерен от центра его квадрата до центра квадрата игрока, хорошо.
Если Зверь не может сделать то, что было бы его первым предпочтительным ходом в ход, потому что Зверь с более высоким приоритетом занял свое место, он выберет следующий лучший выбор, а не останется на месте (если ход все еще возможен).
Примеры случаев
Простое раздавить
вход
5 3
#####
#O~H#
#####
R
Выход
2
Матрица предпочтений -> Смерть
вход
5 5
#####
#O #
# ~ #
# H#
#####
WWDW
Выход
aHHHH!
0
Матрица предпочтений -> Победа
вход
5 5
#####
#O #
# ~ #
# H#
#####
WRD
Выход
2
В ожидании жнеца
вход
5 5
#####
#O #
# ~ #
# H#
#####
WWW
Выход
aHHHH!
0
Успешное поражение в сценарии Википедии
вход
40 23
########################################
#~ ~ ~~ ~ ~ ~~ ~ ~~ ~ ~ ~~ #
#~~ ~ ~~ ~ ~ ~~ ~ #
#~# ~~ ~~~~ ~ ~~~~ ~ ~~~ ~#
# ~ ~ ~ ~~ #~~ ~ #
#~~ ~~~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ #
# ~~ ~ ~ ~ ~~~ H ~ #~ #
# O~ ~ # ~~~ ~ ~ ~~ ~ ~ ~~ #
# ~ ~H~~ ~~ ~ # ~~ ~ #
# ~~ ~ ~~~ ~~ ~~~~ ~ ~#
#~ ~ ~~~ ~ ~ ~ ~ ~~ ~~#
# ~ # ~ ~~ ~~~ ~ ~ ~ # ~#
#~ ~ ~~ ~ ~ H ~~ ~~ ~ ~ ~~~ #
# ~ ~ ~ ~ ~ ~~~ ~ #
# ~~ ~ ~ ~~ ~ ~ ~ ~ ~ #
# ~~ ~ ~ ~ ~ ~~ #
#~ ~ # ~~~~ ~ ~~~H # ~ #
# ~ ~ ~ ~ ~ ~~ ~ #
# ~ ~ #~ ~ ~~ ~ ~ ~#
# ~~ ~ ~ ~~ ~ ~ #
# ~~~ ~ ~~ ~ ~ ~ ~ #
# ~ ~ ~ ~~ ~ ~ ~ #
########################################
RRRUWWWRRRURWWWWRDRRWWRDWWWWD
Выход
8
Карта предоставлена мной, перемещается и выводится @bobbel, подтверждается мной и @Allbeert.
Критерии победы
Я думаю, что это игра в гольф, поэтому я буду придерживаться правил гольфа, если люди не будут жаловаться.
Дополнительный кредит
Воспроизводимая реализация Unicode с двойными широкими символами, напоминающими изображение!