Este desafio é inspirado em um jogo de tabuleiro que joguei há algum tempo.
A história desse desafio não precisa necessariamente ser lida; o objetivo da seção de desafio deve explicar tudo o que é necessário.
A história
As pessoas estão trancadas dentro de uma grande sala com um monstro devorador de seres humanos. As paredes da sala estão encantadas, teleportando objetos pela sala quando tocadas. O referido monstro marcha pelo quarto, procurando carne. O primeiro humano à sua vista será consumido por seus dentes afiados.
O objetivo do desafio
Você recebe o mapa da sala, incluindo a localização das pessoas e do monstro.
%%%KLMNOPQRSTA%
%%J B
%I % C
H D
G %% E
F F
E % G
D H
C % I%
B J%%
%ATSRQPONMLK%%%
Vamos dividir os componentes do mapa.
- Cartas de
AparaT: Se o monstro pisar em uma delas, ele será teleportado para a segunda aparição dessa carta e não mudará de direção. Só haverá zero ou duas letras no quadro. %: Revestimento de parede. Apenas para formatação e boa aparência.#: A localização inicial do monstro.*: A localização das pessoas.: Peças vazias, o monstro pode se mover livremente sobre elas.
Algumas coisas adicionais a serem observadas sobre o mapa:
- As dimensões do mapa e a localização do objeto não serão constantes; portanto, seu código precisará se adaptar dinamicamente a isso.
O monstro sempre seguirá na direção em que está atualmente (voltado para o oeste no início), a menos que encontre um humano; nesse caso, ele se volta para o humano mais próximo .
O monstro avista um humano se não houver azulejos de parede ou teletransportador em uma linha horizontal ou vertical reta entre ele e o humano.
Outra coisa a se notar é que, se o monstro estiver na frente de uma parede sólida ( %) ou precisar decidir entre dois humanos, ele sempre priorizará da direita para a esquerda.
Se o monstro não conseguir virar à direita e dar um passo à frente por algum motivo, ele virará à esquerda .
Então, no final, a ordem em que o monstro prioriza as direções encaminhamos, direita, esquerda, para trás.
Entrada
- O mapa, incluindo a localização inicial do monstro e as posições das pessoas como seus respectivos personagens. Não deve haver outra entrada além da sequência do mapa, ou a matriz de sequências ou caracteres.
A entrada pode ser recebida em qualquer formato razoável; uma única sequência ou uma matriz de sequências para o mapa.
Resultado
A coordenada da pessoa que primeiro é comida pelo monstro.
As coordenadas começam no canto superior esquerdo e são indexadas em 0; portanto, o primeiro bloco terá as coordenadas (0 | 0). Se você estiver usando a indexação 1, especifique-a na sua resposta.
Regras
- Este é o code-golf , o código mais curto em bytes em qualquer idioma vence.
- As brechas padrão são proibidas.
- Você pode assumir que o monstro sempre será capaz de alcançar um humano.
Casos de teste
Entrada:
%%%KLMNOPQRSTA%
%%J B
%I %* C
H * D
G %% E
F # F
E % G
D * H
C % I%
B J%%
%ATSRQPONMLK%%%
Saída: (10,2)como o monstro não pode ver as outras duas pessoas quando passa por elas, é teleportado para a outra Fparede, onde verá a última pessoa.
Entrada:
%%%KLMNOPQRSTA%
%%J B
%I * C
H %%% * D
G #% E
F %%% % F
E G
D % H
C * I%
B * J%%
%ATSRQPONMLK%%%
Resultado: (12,3)
Entrada:
%%%KLMNOPQRSTA%
%%J B
%I %%% C
H *%#% D
G E
F F
E % G
D H
C I%
B J%%
%ATSRQPONMLK%%%
Resultado: (6, 3)
Entrada:
%%%%%%%%%%%%%%%
%#% %%% %
%A%ABCD %*% %
%*F G %%% %
% %BC% FD %
% % % %%%%
% % % %%
% % %% G %
% %
%*% % % %
%%%%%%%%%%%%%%%
Resultado: (1,9)
Boa sorte!