Como aprendemos com o IBM PC AT, YouTube (ver vídeo) , Wikipedia (ver artigo) e Vila Sésamo:
A letra H
é a letra mais impiedosa do alfabeto !
(Mesmo quando realmente composto de dois elementos no Código Página 437. De fato, é ainda MAIS impiedoso dessa maneira.)
Como os alienígenas, uhm ... er ... alienígenas , bestas perseguem implacavelmente todos os que ousariam chegar perto de seus ovos. Não há raciocínio com eles. Você deve esmagá-los para não perecer.
Nesse cenário, assumiremos que você está em sua última vida e conheceu Bestas comuns em um terreno sem ovos (como na captura de tela da Wikipedia). Você não tem um teclado numérico e só pode se mover diretamente para cima / baixo / esquerda / direita ... mas as bestas aparentemente têm um e podem se mover na diagonal na sua vez.
A escolha de uma besta entre as opções será a que minimiza a distância do jogador. Se as distâncias forem iguais, o desempate é feito favorecendo a esquerda + para cima sobre a direita + para baixo, mas aqui está a matriz de desambiguação para ser explícita sobre isso ... número mais baixo para desempate:
1 3 4
2 H 5
6 8 7
Uma fera nunca dorme, mas felizmente é um pouco mais lenta que o jogador. Eles se movem a cada dois turnos (dando ao jogador uma vantagem iniciando suas alternâncias no segundo turno). Eles devem se mover se for possível, independentemente de isso os afastar do jogador.
Você esmaga um animal se mover um trem de paredes móveis onde ele estava sentado em um espaço fechado. Essas bestas comuns valem 2 pontos por cabeça.
Entrada
Um par de números inteiros indicando o tamanho de um mapa em colunas e depois em linhas.
Contagem de linhas de linhas de entrada, cada uma do tamanho da coluna ... contendo uma parede sólida (
#
), uma parede móvel (~
), uma besta (H
), o player (O
) ou apenas um espaço.Entrada que será U, D, L, R indicando uma tentativa de movimento do jogador ... ou W para apenas esperar. Observe que a tentativa de empurrar uma parede móvel bloqueada é uma entrada legal, apenas resultará em nenhuma ação.
Resultado
aHHHH!
se os animais mataram o jogador ... ou nada se o jogador ganhou sem animais restantesA pontuação
(Observação: para fins de depuração e / ou diversão, você provavelmente desejará gerar o estado a cada etapa; mas isso é muito tempo para ser postado aqui.)
Esclarecimentos
É garantido que os mapas sejam delimitados por paredes sólidas.
A ordem de quem se move por sua vez é importante para o resultado. Assim: O jogador sempre segue primeiro, então as bestas recebem uma ordem com base na posição inicial do mapa, se você estiver varrendo a tela de cima para baixo, da esquerda para a direita. (Um animal da linha 1 se move antes de um animal da linha 2 e dois animais na mesma linha seria aquele com o menor número de coluna que se moveria antes do outro)
Bestas em movimento na diagonal podem se mover para qualquer espaço diagonal aberto adjacente, independentemente de exigir espremer entre paredes.
Um jogador pode empurrar qualquer número de paredes móveis em uma linha, desde que exista um espaço ou um animal no outro extremo. Mas tentar empurrar um conjunto de paredes para dentro de uma Besta que não esteja presa entre as paredes trata a Besta como uma parede e não permitirá o movimento.
A decisão de movimentação de uma Besta durante um turno é baseada na localização do jogador no início do turno. Sua otimização desejada de "distância ao jogador" é feita através de um cálculo "enquanto o corvo voa". Qualquer aproximação que daria o mesmo resultado medido do centro do quadrado ao centro do quadrado do jogador é boa.
Se uma Besta não puder fazer o que teria sido o seu primeiro movimento preferido em um turno porque uma Besta de maior prioridade tomou o seu lugar, ela fará a próxima melhor escolha em vez de permanecer no lugar (se ainda for possível).
Casos de amostra
Simple Crush
Entrada
5 3
#####
#O~H#
#####
R
Resultado
2
Matriz de Preferências -> Morte
Entrada
5 5
#####
#O #
# ~ #
# H#
#####
WWDW
Resultado
aHHHH!
0
Matriz de Preferências -> Ganhar
Entrada
5 5
#####
#O #
# ~ #
# H#
#####
WRD
Resultado
2
Esperando o Ceifador
Entrada
5 5
#####
#O #
# ~ #
# H#
#####
WWW
Resultado
aHHHH!
0
Derrota bem-sucedida no cenário da Wikipedia
Entrada
40 23
########################################
#~ ~ ~~ ~ ~ ~~ ~ ~~ ~ ~ ~~ #
#~~ ~ ~~ ~ ~ ~~ ~ #
#~# ~~ ~~~~ ~ ~~~~ ~ ~~~ ~#
# ~ ~ ~ ~~ #~~ ~ #
#~~ ~~~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ #
# ~~ ~ ~ ~ ~~~ H ~ #~ #
# O~ ~ # ~~~ ~ ~ ~~ ~ ~ ~~ #
# ~ ~H~~ ~~ ~ # ~~ ~ #
# ~~ ~ ~~~ ~~ ~~~~ ~ ~#
#~ ~ ~~~ ~ ~ ~ ~ ~~ ~~#
# ~ # ~ ~~ ~~~ ~ ~ ~ # ~#
#~ ~ ~~ ~ ~ H ~~ ~~ ~ ~ ~~~ #
# ~ ~ ~ ~ ~ ~~~ ~ #
# ~~ ~ ~ ~~ ~ ~ ~ ~ ~ #
# ~~ ~ ~ ~ ~ ~~ #
#~ ~ # ~~~~ ~ ~~~H # ~ #
# ~ ~ ~ ~ ~ ~~ ~ #
# ~ ~ #~ ~ ~~ ~ ~ ~#
# ~~ ~ ~ ~~ ~ ~ #
# ~~~ ~ ~~ ~ ~ ~ ~ #
# ~ ~ ~ ~~ ~ ~ ~ #
########################################
RRRUWWWRRRURWWWWRDRRWWRDWWWWD
Resultado
8
Mapa fornecido por mim, movimentos e saída da @bobbel, corroborado por mim e pela @Allbeert.
Critérios Vencedores
Eu acho que isso é jogável, então vou seguir as regras do código, a menos que as pessoas se queixem.
Crédito extra
Implementação Unicode reproduzível com caracteres de largura dupla para se parecer com a imagem!