Dado un conjunto de contornos 2D no superpuestos cerrados (separados por al menos un espacio, incluso en diagonales) con flechas orientadas consistentemente en el mismo sentido horario o antihorario (cada contorno tiene su propia dirección) y un número positivo n
, mueva las flechas n
pasos a lo largo de los contornos en la dirección respectiva. Las flechas están representadas > v < ^
respectivamente por las direcciones derecha, abajo, izquierda y arriba. Allí los otros caracteres son -
(horizontal), |
(vertical) y +
(esquina). Cuando una flecha está en una esquina, mantiene su dirección actual y la cambia solo después de tomar el turno.
Siempre habrá un segmento recto (o un espacio) entre dos esquinas (como +-+
para la horizontal y similar para la vertical); en otras palabras, las U
curvas cerradas están prohibidas. Los segmentos entre las esquinas son verticales u horizontales y la curva en una esquina es siempre de 90 grados.
Entrada:
- un entero positivo -
n
- número de pasos - una representación ASCII de los contornos: puede ser una cadena de varias líneas, una lista de cadenas, una lista de caracteres, etc.
Salida:
Los mismos contornos con todas las flechas cambiaron los n
pasos en la dirección general de cada contorno.
Casos de prueba:
1)
Entrada:
n
= 1
+----->->
| |
| v---+
| |
+---<-------+
Salida:
+------>+
| v
| +>--+
| |
+--<--------+
2)
Entrada:
n
= 2
+-----+ +---+
| | | |
+-->--+ | v
| |
+--->---+ |
| |
+------<<---+
Salida:
+-----+ +---+
| | | |
+---->+ | |
| |
+----->-+ v
| |
+----<<-----+
3)
Entrada:
n
= 3
+---+ +---+ +-------+
| | | v | |
^ | | | +-<-+ |
| | ^ | | v
| +---+ +-->----+ |
| |
| +-------+ +---+ |
| | | v | |
+---+ +---+ +---+
Salida:
+>--+ ^---+ +-------+
| | | | ^ |
| | | | +---+ |
| | | | | |
| +---+ v----->-+ |
| |
| +-------+ +---+ v
| | | | | |
+---+ +-<-+ +---+
4)
Entrada:
n
= 1
+--+
| |
| +---+
| |
+----+ |
| |
+-+
Salida:
+--+
| |
| +---+
| |
+----+ |
| |
+-+
5)
Entrada
n
= 4
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
Salida:
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
6)
Entrada:
n
= 1
^->
^ v
<<v
Salida:
^>+
^ v
<<v
Escriba una función o un programa para resolver la tarea anterior. El código más corto en bytes en cada idioma gana. No se desanime por los idiomas de golf. La explicación del algoritmo y el código es muy 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.