Dado um conjunto de contornos 2d fechados e não sobrepostos (separados por pelo menos um espaço, mesmo nas diagonais) com setas orientadas consistentemente na mesma direção no sentido horário ou anti-horário (cada contorno tem sua própria direção) e um número positivo n
, mova as setas n
passos ao longo dos contornos na respectiva direção. As setas são representadas por > v < ^
respectivamente para as direções direita, baixo, esquerda e cima. Lá, os outros caracteres são -
(horizontal), |
(vertical) e +
(canto). Quando uma flecha está em um canto, ela mantém sua direção atual e a altera somente após a virada.
Sempre haverá um segmento reto (ou um espaço) entre dois cantos (como +-+
na horizontal e similar na vertical) - em outras palavras, as U
curvas acentuadas são proibidas. Os segmentos entre os cantos são verticais ou horizontais e a dobra em um canto é sempre 90 graus.
Entrada:
- um número inteiro positivo -
n
- número de etapas - uma representação ASCII dos contornos - pode ser uma cadeia de linhas múltiplas, uma lista de cadeias, uma lista de caracteres e assim por diante.
Saída:
Os mesmos contornos com todas as setas mudaram as n
etapas na direção geral de cada contorno.
Casos de teste:
1
Entrada:
n
= 1
+----->->
| |
| v---+
| |
+---<-------+
Saída:
+------>+
| v
| +>--+
| |
+--<--------+
2)
Entrada:
n
= 2
+-----+ +---+
| | | |
+-->--+ | v
| |
+--->---+ |
| |
+------<<---+
Saída:
+-----+ +---+
| | | |
+---->+ | |
| |
+----->-+ v
| |
+----<<-----+
3)
Entrada:
n
= 3
+---+ +---+ +-------+
| | | v | |
^ | | | +-<-+ |
| | ^ | | v
| +---+ +-->----+ |
| |
| +-------+ +---+ |
| | | v | |
+---+ +---+ +---+
Saída:
+>--+ ^---+ +-------+
| | | | ^ |
| | | | +---+ |
| | | | | |
| +---+ v----->-+ |
| |
| +-------+ +---+ v
| | | | | |
+---+ +-<-+ +---+
4)
Entrada:
n
= 1
+--+
| |
| +---+
| |
+----+ |
| |
+-+
Saída:
+--+
| |
| +---+
| |
+----+ |
| |
+-+
5)
Entrada
n
= 4
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
Saída:
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
6
Entrada:
n
= 1
^->
^ v
<<v
Saída:
^>+
^ v
<<v
Escreva uma função ou um programa que resolva a tarefa acima. O código mais curto em bytes em todos os idiomas vence. Não desanime pelas línguas do golfe. A explicação do algoritmo e do código é altamente apreciada.
There will always be a straight segment (or a space) between any two corners (like +-+ for the horizontal and similar for the vertical) - in other words the sharp U turns are forbidden.