Dato un insieme di contorni 2d chiusi non sovrapposti (separati da almeno uno spazio anche sulle diagonali) con le frecce orientate coerentemente nella stessa direzione in senso orario o antiorario (ogni contorno ha la propria direzione) e un numero positivo n, spostare le frecce npassi lungo i contorni nella rispettiva direzione. Le frecce sono rappresentate > v < ^rispettivamente dalle direzioni destra, giù, sinistra e su. Lì gli altri personaggi sono -(orizzontale), |(verticale) e +(angolo). Quando una freccia si trova su un angolo, mantiene la direzione corrente e la cambia solo dopo aver effettuato la svolta.
Ci sarà sempre un segmento rettilineo (o uno spazio) tra due angoli qualsiasi (come +-+per l'orizzontale e simile per la verticale) - in altre parole Usono vietate le curve strette. I segmenti tra gli angoli sono verticali o orizzontali e la curva in un angolo è sempre di 90 gradi.
Ingresso:
- un numero intero positivo -
n- numero di passi - una rappresentazione ASCII dei contorni: può essere una stringa multilinea, un elenco di stringhe, un elenco di caratteri e così via.
Produzione:
Gli stessi contorni con tutte le frecce hanno spostato i npassaggi nella direzione generale di ciascun contorno.
Casi test:
1.
Ingresso:
n = 1
+----->->
| |
| v---+
| |
+---<-------+
Produzione:
+------>+
| v
| +>--+
| |
+--<--------+
2.
Ingresso:
n = 2
+-----+ +---+
| | | |
+-->--+ | v
| |
+--->---+ |
| |
+------<<---+
Produzione:
+-----+ +---+
| | | |
+---->+ | |
| |
+----->-+ v
| |
+----<<-----+
3.
Ingresso:
n = 3
+---+ +---+ +-------+
| | | v | |
^ | | | +-<-+ |
| | ^ | | v
| +---+ +-->----+ |
| |
| +-------+ +---+ |
| | | v | |
+---+ +---+ +---+
Produzione:
+>--+ ^---+ +-------+
| | | | ^ |
| | | | +---+ |
| | | | | |
| +---+ v----->-+ |
| |
| +-------+ +---+ v
| | | | | |
+---+ +-<-+ +---+
4.
Ingresso:
n = 1
+--+
| |
| +---+
| |
+----+ |
| |
+-+
Produzione:
+--+
| |
| +---+
| |
+----+ |
| |
+-+
5.
Ingresso
n = 4
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
Produzione:
^>>>>
^ v
^ v>>>>
^ v
<<<<<<<<v
6.
Ingresso:
n = 1
^->
^ v
<<v
Produzione:
^>+
^ v
<<v
Scrivi una funzione o un programma risolvendo l'attività sopra. Vince il codice più breve in byte in ogni lingua. Non lasciarti scoraggiare dalle lingue del golf. La spiegazione dell'algoritmo e del codice è molto apprezzata.
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.