Esse desafio ocorre em uma grade.
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
Essa é 10 x 10, mas pode ter qualquer forma retangular.
Existem quatro direções nesta grade. Cima, baixo, esquerda e direita.
A tarefa é desenhar um caminho que comece com uma direção de maiúscula inicial. Neste exemplo, irá diretamente para cima a partir da U.
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| U |
+----------+
O caminho irá para cima e será composto de caracteres de ponto final (.), Até atingir uma parede, quando terminará com um asterisco (*).
+----------+
| * |
| . |
| . |
| . |
| . |
| . |
| . |
| . |
| U |
+----------+
Além do início do caminho, há também trocadores de direção, representados por uma inicial de direção em letras minúsculas.
+----------+
| |
| |
| |
| r.....*|
| . |
| . |
| . |
| . |
| U |
+----------+
Além disso, uma maiúscula X nos um obstáculo que terminará o caminho.
+----------+
| |
| |
| |
| |
| r...*X |
| . |
| . |
| . |
| U |
+----------+
Regras
- A entrada é uma sequência que consiste em um quadro (composto por caracteres |, - e +) contendo caracteres que indicam início de caminho, trocadores de direção e obstáculos.
- Seu código deve adicionar caracteres de ponto final para seguir o caminho descrito por iniciantes e alteradores de direção e um asterisco quando / se o caminho encontrar uma parede ou obstáculo.
- Pode haver vários caminhos iniciados.
- O código ainda será encerrado sem erros se o caminho descrever um loop.
- Se um caminho encontrar um início de caminho, ele atuará como um alterador de direção.
- É código de golfe, código de bytes baixos e sem brechas padrão, por favor.
- Eu sempre prefiro links para um intérprete on-line.
Casos de teste
1: Simples
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| . |
| . |
| . |
| . |
| . |
| U |
+----------+
2: Vire à direita
+----------+
| |
| |
| |
| r |
| |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| r.....*|
| . |
| . |
| . |
| . |
| U |
+----------+
3: Encruzilhada
+----------+
| |
| |
| |
| r d |
| |
| u l |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| . r..d |
| . . . |
| u....l |
| . |
| . |
| U |
+----------+
4: 4 Cruzando caminhos
+----------+
| D |
| |
| |
|R |
| |
| L|
| |
| |
| U |
+----------+
+----------+
| * D |
| . . |
| . . |
|R........*|
| . . |
|*........L|
| . . |
| . . |
| U * |
+----------+
5: Primeiro loop
+----------+
| |
| |
| |
| r d |
| |
| u l |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| r..d |
| . . |
| u..l |
| . |
| . |
| U |
+----------+
6: Iniciador como trocador
+----------+
| |
| |
| |
| L |
| |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
|*..L |
| . |
| . |
| . |
| . |
| U |
+----------+
7: Loop Reto
+----------+
| |
| |
| |
| |
| r l |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| |
| r..l |
| . |
| . |
| . |
| U |
+----------+
8: Nó apertado
+----------+
| |
| |
| |
| d l |
| r u |
| r u |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| d..l |
| .r.u |
| r.u |
| . |
| . |
| U |
+----------+
9: Um obstáculo
+----------+
| |
| |
| |
| |
| r X |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| |
| r...*X |
| . |
| . |
| . |
| U |
+----------+
10: Forma S
+----------+
|r d |
| |
| XXXXXXXX|
| d l |
|ul |
|XXXXXXX |
| |
|R u |
| |
+----------+
+----------+
|r.....d |
|. * |
|. XXXXXXXX|
|.d......l |
|ul . |
|XXXXXXX . |
| . |
|R.......u |
| |
+----------+
11: Nó de 4 Vias
+----------+
| D |
| |
| r |
|R d |
| |
| u L|
| l |
| |
| U |
+----------+
+----------+
| * D |
| . . |
| r.....*|
|R....d. |
| .... |
| .u....L|
|*.....l |
| . . |
| U * |
+----------+
12: Junções Ocupadas
+----------+
|rrrrr rrrd|
| rlrl |
|ul rrd |
|ruX X |
|udl ll |
|ull |
|rlr |
|rdr d |
|Uruull |
+----------+
+----------+
|rrrrr.rrrd|
|.rlrl .|
|ul rrd .|
|ruX.X. .|
|udl.ll .|
|ull. .|
|rlr. .|
|rdr..d .|
|Uruull *|
+----------+
13: Inicia no Edge
+----------+
| U |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
+----------+
| U |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
14: Atravessando caminhos mortos
+----------+
| |
| |
| |
| R |
| |
| |
| |
| |
| U|
+----------+
+----------+
| *|
| .|
| .|
| R..*|
| .|
| .|
| .|
| .|
| U|
+----------+