n
Bewegen Sie die Pfeile bei einem Satz geschlossener, nicht überlappender 2D-Konturen (durch mindestens ein Leerzeichen auch in Diagonalen getrennt) mit Pfeilen, die durchgehend im oder gegen den Uhrzeigersinn ausgerichtet sind (jede Kontur hat ihre eigene Richtung) und einer positiven Zahl n
Schritte entlang der Konturen in die jeweilige Richtung. Die Pfeile sind > v < ^
jeweils für die Rechts-, Abwärts-, Links- und Aufwärtsrichtung dargestellt. Dort sind die anderen Zeichen -
(horizontal), |
(vertikal) und +
(Ecke). Wenn sich ein Pfeil an einer Ecke befindet, behält er seine aktuelle Richtung bei und ändert sie erst nach dem Abbiegen.
Es wird immer ein gerades Segment (oder ein Leerzeichen) zwischen zwei Ecken geben (wie +-+
bei der Horizontalen und ähnlich bei der Vertikalen) - mit anderen Worten, die scharfen U
Kurven sind verboten. Die Segmente zwischen den Ecken sind entweder vertikal oder horizontal und die Biegung an einer Ecke beträgt immer 90 Grad.
Eingang:
- eine positive ganze Zahl -
n
- Anzahl von Schritten - eine ASCII-Darstellung der Konturen - es kann sich um eine mehrzeilige Zeichenfolge, eine Liste von Zeichenfolgen, eine Liste von Zeichen usw. handeln.
Ausgabe:
Dieselben Konturen mit allen Pfeilen haben die n
Schritte in der gesamten Richtung der jeweiligen Kontur verschoben .
Testfälle:
1.
Eingang:
n
= 1
+----->->
| |
| v---+
| |
+---<-------+
Ausgabe:
+------>+
| v
| +>--+
| |
+--<--------+
2.
Eingang:
n
= 2
+-----+ +---+
| | | |
+-->--+ | v
| |
+--->---+ |
| |
+------<<---+
Ausgabe:
+-----+ +---+
| | | |
+---->+ | |
| |
+----->-+ v
| |
+----<<-----+
3.
Eingang:
n
= 3
+---+ +---+ +-------+
| | | v | |
^ | | | +-<-+ |
| | ^ | | v
| +---+ +-->----+ |
| |
| +-------+ +---+ |
| | | v | |
+---+ +---+ +---+
Ausgabe:
+>--+ ^---+ +-------+
| | | | ^ |
| | | | +---+ |
| | | | | |
| +---+ v----->-+ |
| |
| +-------+ +---+ v
| | | | | |
+---+ +-<-+ +---+
4.
Eingang:
n
= 1
+--+
| |
| +---+
| |
+----+ |
| |
+-+
Ausgabe:
+--+
| |
| +---+
| |
+----+ |
| |
+-+
5.
Eingang
n
= 4
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
Ausgabe:
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
6.
Eingang:
n
= 1
^->
^ v
<<v
Ausgabe:
^>+
^ v
<<v
Schreiben Sie eine Funktion oder ein Programm zur Lösung der oben genannten Aufgabe. Der kürzeste Code in Bytes in jeder Sprache gewinnt. Lassen Sie sich von den Golfsprachen nicht entmutigen. Die Erklärung des Algorithmus und des Codes wird sehr geschätzt.
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.