Hora de outro desafio de labirinto, mas não como você o conhece.
As regras para esse desafio são um pouco diferentes da maioria dos desafios do labirinto. Os tipos de bloco são definidos da seguinte maneira:
S
: A localização no labirinto em que você começaE
: O local que você está tentando acessar0
: Muro que você não pode atravessar+
: Piso que você pode atravessar
Você pode viajar em uma das seis direções: cima-esquerda, cima-direita, esquerda, direita, baixo-esquerda ou baixo-direita.
\ /
-S-
/ \
O labirinto não quebra. O objetivo é encontrar a seqüência de caminho mais curto para chegar a partir S
de E
.
Entrada:
A entrada é linhas separadas por espaço, como os labirintos mostrados. Nenhum espaço à direita seguirá uma linha.
Saída:
Uma série de R
, L
e F
onde
R
gira você para a direita (sentido horário) 60 grausL
gira você para a esquerda (sentido anti-horário) 60 grausF
move um espaço na direção que você está apontando
Você começa a apontar left-up
O caminho mais curto é contado pelo comprimento da sequência produzida, não pelo número de posições visitadas. Seu programa deve imprimir o caminho mais curto como a solução.
Se o labirinto é insolúvel, você deve produzir Invalid maze!
.
( >>>
é a saída)
0 0 0 0
0 + 0 + 0
0 0 0 + + 0
0 + 0 + 0 + 0
0 0 + + 0 0 + 0
0 0 + 0 + 0 0 + 0
E 0 + 0 0 + + 0
+ + 0 + 0 + 0
0 0 0 0 0 +
+ 0 + + +
0 S 0 0
>>>RFRFFLFLFRFFLFFFLFLFFRFLFLFRFRFRF
+ 0 0 0 0 0 0
0 0 0 0 0 + + 0
0 0 E 0 + 0 0 + 0
0 0 0 0 0 0 0 +
0 + 0 0 + + +
0 0 + + 0 0
S + 0 0 0
>>>Invalid maze!
0 E S
>>>LF
E + 0
0 + + +
0 0 S
+ +
>>>FFLF
E
0 +
0 + +
0 +
S
>>>RFFLFF
0 E + 0 0
0 + 0 0 + +
+ 0 + + + 0
+ 0 + 0 + 0
+ + + 0 S
>>>FFLFLFFRFRFFRFF
E 0 + + 0
0 + 0 + + 0
+ + + 0 + 0
+ 0 0 0 0 0
+ + + + 0
+ 0 S 0
>>>FLFFRFFRFLF
(Observe que alguns dos labirintos têm outras soluções que têm o mesmo comprimento, mas não estão listadas aqui)