Sua vida pode depender disso. Não pisque. Nem pisque. Pisque e você está morto. Eles são rápidos. Mais rápido do que você pode acreditar. Não vire as costas, não desvie o olhar e não pisque! Boa sorte.
Anjos chorando são uma raça alienígena que não pode se mover enquanto é observada por outro ser (até outro anjo). Eles se alimentam enviando suas vítimas de volta no tempo. Você ( o médico ) está preso em uma sala com alguns e precisa chegar ao seu TARDIS.
Tarefa
Escreva um programa que, dada uma representação ASCII de uma sala retangular, produza um caminho que o levará à segurança. Se algum anjo puder atacar - a qualquer momento durante o seu progresso - esse caminho não será seguro. Um anjo pode atacar se conseguir vê-lo sem ser visto por você ou por outro anjo.
Entrada
Entrada é duas partes. Primeiro, a direção que você está seguindo (NSEW). Em seguida, nas linhas seguintes, uma representação da sala, mostrando os locais de início / fim e a localização / face de todos os Anjos.
A amostra abaixo mostra que existe um anjo voltado para o oeste e você começa para o sul.
S
..........
....D.....
..........
..........
..........
..........
..........
..........
.........W
..........
...T......
.
- Espaço vazioD
- O médico (posição inicial)T
- O TARDIS (posição final)N,S,E,W
- Um anjo, de frente para a direção especificada (norte, sul, leste, oeste)
Linha de visão
Você pode ver qualquer espaço a 45 graus da direção em que está voltado. A linha de visão é obstruída se houver outra entidade ao longo de uma diagonal direta horizontal, vertical ou 45 graus. Qualquer outra diagonal não obstrui a visualização. A linha de visão dos anjos funciona da mesma maneira. Por exemplo, a seguir, -
representa seu campo de visão, supondo que você esteja voltado para o sul.
........
...D....
..---...
.-----..
-------.
---N----
---.--N-
---.----
Resultado
A saída é uma sequência que representa o caminho que você seguirá para sair. Se houver vários caminhos seguros, escolha qualquer um. Se nenhum caminho estiver seguro, faça a saída 0
. Se o mapa estiver malformado, faça o que quiser, incluindo falhas. Considere-o malformado se a sala não for retangular, não houver saída etc. Se não houver Anjos, não será mal formado, simplesmente fácil.
Para cada etapa, você pode fazer uma de duas coisas: mover-se em uma direção NSEW ou girar para uma direção NSEW (sem alterar as posições). Para mover, basta imprimir a letra nessa direção. Para virar para enfrentar uma direção, faça a saída F
seguida pela letra apropriada. Por exemplo, a seguinte saída:
SSFESSSSSSSW
é um caminho seguro para a amostra fornecida na seção de entrada. Você se move para o sul duas vezes, enfrenta o leste para manter o anjo à vista, depois se move para o sul mais sete vezes e para o oeste uma vez para entrar na TARDIS.
Casos de teste
1) Você pode dar a volta no anjo voltado para o leste para chegar ao TARDIS. A menos que você pise diretamente entre eles, eles travam um ao outro no lugar, então não importa para que lado você esteja diante.
W
...D....
........
........
........
.E.....W
........
........
...T....
2) Você perde. Não há como passar por eles. Eles podem se ver até você se colocar entre eles. Nesse ponto, você não pode enfrentar os dois e pronto. É melhor fechar os olhos e acabar logo com isso.
S
...D....
........
........
........
E......W
........
........
...T....
Ganhando
Aplicam-se regras e brechas de golfe padrão , menos bytes ganhos. Em breve, tentarei obter mais casos de teste, mas fique à vontade para sugerir o seu.
Imagem e citações do Doctor Who.
J
).