Biorąc pod uwagę zestaw zamkniętych nie nakładających się konturów 2d (oddzielonych co najmniej jedną spacją nawet na przekątnych) ze strzałkami zorientowanymi konsekwentnie w tym samym kierunku zgodnym z ruchem wskazówek zegara lub przeciwnie do ruchu wskazówek zegara (każdy kontur ma swój własny kierunek) i liczbą dodatnią n, przesuń strzałki nkroki wzdłuż konturów w odpowiednim kierunku. Strzałki są reprezentowane > v < ^odpowiednio przez kierunki w prawo, w dół, w lewo i w górę. Tam pozostałe znaki to -(poziomo), |(pionowo) i +(narożnik). Gdy strzała jest na rogu, zachowuje swój obecny kierunek i zmienia ją dopiero po wykonaniu skrętu.
Zawsze będzie jakikolwiek prosty odcinek (lub spacja) między dowolnymi dwoma narożnikami (jak +-+dla poziomego i podobnego dla pionowego) - innymi słowy, ostre Uzakręty są zabronione. Segmenty między narożnikami są pionowe lub poziome, a zagięcie w rogu zawsze wynosi 90 stopni.
Wkład:
- dodatnia liczba całkowita
n- liczba kroków - reprezentacja konturów ASCII - może to być ciąg wieloliniowy, lista ciągów, lista znaków i tak dalej.
Wydajność:
Te same kontury ze wszystkimi strzałkami przesunęły nkroki w ogólnym kierunku każdego konturu.
Przypadki testowe:
1.
Wkład:
n = 1
+----->->
| |
| v---+
| |
+---<-------+
Wydajność:
+------>+
| v
| +>--+
| |
+--<--------+
2)
Wkład:
n = 2
+-----+ +---+
| | | |
+-->--+ | v
| |
+--->---+ |
| |
+------<<---+
Wydajność:
+-----+ +---+
| | | |
+---->+ | |
| |
+----->-+ v
| |
+----<<-----+
3)
Wkład:
n = 3
+---+ +---+ +-------+
| | | v | |
^ | | | +-<-+ |
| | ^ | | v
| +---+ +-->----+ |
| |
| +-------+ +---+ |
| | | v | |
+---+ +---+ +---+
Wydajność:
+>--+ ^---+ +-------+
| | | | ^ |
| | | | +---+ |
| | | | | |
| +---+ v----->-+ |
| |
| +-------+ +---+ v
| | | | | |
+---+ +-<-+ +---+
4
Wkład:
n = 1
+--+
| |
| +---+
| |
+----+ |
| |
+-+
Wydajność:
+--+
| |
| +---+
| |
+----+ |
| |
+-+
5
Wkład
n = 4
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
Wydajność:
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
6.
Wkład:
n = 1
^->
^ v
<<v
Wydajność:
^>+
^ v
<<v
Napisz funkcję lub program rozwiązujący powyższe zadanie. Wygrywa najkrótszy kod w bajtach w każdym języku. Nie zniechęcaj się językami golfa. Wyjaśnienie algorytmu i kodu jest bardzo mile widziane.
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.