O rei Julian precisa atravessar a selva, mas está com preguiça. Ele quer que um computador seja capaz de calcular uma rota pela floresta para ele.
Usando STDIN, obtenha um mapa da floresta para o computador quebrar. Ele seguirá o seguinte formato:
01001E
010110
000P00
1100J1
S00111
A maneira como o mapa da selva funciona é:
0
é motivo que Julian pode se mover.
1
é selva intransitável densa.
P
é uma área com predadores, que você deve evitar a todo custo.
J
é selva relativamente grossa. Os servos de Julian podem romper um desses antes de se cansar.
S
é onde Julian começa. Pode estar em qualquer lugar do mapa.
E
é para onde Julian quer ir; o fim do caminho. Também pode estar em qualquer lugar do mapa, como qualquer outro bloco.
Cada personagem é um bloco no mapa. Quebras de linha indicam uma nova linha de blocos. Se o STDIN no seu idioma não suportar quebras de linha, a quebra de linha deverá ser substituída por um espaço para indicar uma nova linha.
Para mover-se entre os blocos, você deve gerar uma string usando STDOUT contendo os seguintes caracteres especiais:
F
- Frente
B
- Para trás
L
- Gire Julian para a esquerda (90 graus no sentido anti-horário)
R
- Gire Julian para a direita (90 graus no sentido horário)
M
- Lacaios destroem um J
ladrilho 1 lado a frente de Julian, se houver um ( M
apenas limpa o ladrilho, você ainda precisa avançar)
Uma saída possível seria:
RFFLFRFMFLFRFLFF
O que resolve o mapa acima.
Notas:
Se o seu programa apresentar uma solução que atinja predadores, passe o jogo.
Se você bater na selva intransitável, basta voltar para onde estava antes de correr para a densa floresta, de frente para o mesmo caminho. (Em direção à selva)
Julian começa a olhar para cima. (^ Dessa maneira ^)
A saída não precisa ser a solução mais rápida
FFF
eFBFBFBFBFBFFF
é a mesma. No entanto, a saída da solução mais rápida possível oferece um bônus de 10% na contagem de bytes.Se um mapa for inválido, STDOUT 'Mapa inválido'. (Isso inclui se o mapa for insolúvel)
Um mapa não pode ter linhas ou colunas de diferentes comprimentos; isso a torna inválida.
Sua resposta deve seguir um pouco este formato:
#Language name, *n* bytes
code
Explanation (optional)
Isso é código-golfe , então o código mais curto em bytes vence.
P
bloco realmente adiciona algo diferente a um1
bloco? Não consigo imaginar uma solução plausível que os trate de maneira diferente.Respostas:
Groovy, 656 bytes
Isso foi muito longo ...
Saída para o labirinto:
Ungolfed:
Em breve, tentarei novamente em python para ver se posso reduzi-lo ainda mais.
fonte