Piet è un linguaggio di programmazione interessante per una serie di motivi. Oggi ci concentreremo su un motivo: il comando roll . Il comando roll era originariamente di PostScript ed è un modo efficace per manipolare lo stack.
Il comando roll apre i primi due elementi dello stack e li utilizza come parametri. Chiameremo il primo valore spuntato turns
e il secondo depth
. Una virata alla profondità n prenderà l'elemento più in alto della pila, lo renderà l'ennesimo elemento nella pila e sposterà ciascuno degli elementi sopra di esso su di uno. Se turns
è negativo, ciò viene fatto nella direzione opposta. Cioè, l'ennesimo elemento viene spostato verso l'alto e gli altri elementi vengono spostati verso il basso. Questo è ripetuto abs(turns)
volte.
Sfida
Scrivi un programma o una funzione che accetta uno stack e restituisce quello stack dopo aver eseguito un lancio.
Regole
- L'input e l'output possono essere in un elenco, in una matrice, in una stringa con un delimitatore, passati in un elemento alla volta o in qualsiasi altro formato ragionevole. L'output deve essere nello stesso formato dell'input.
depth
non sarà mai negativo e non sarà mai maggiore della lunghezza della pila.- Lo stack di input conterrà sempre almeno due elementi.
- Questo è code-golf, quindi vince la risposta più breve in ogni lingua. Come tale, non accetterò una risposta.
- Sono vietate le scappatoie standard .
Casi test
in: out:
2
4
1 3
2 4
3 1
4 2
5 5
6 6
in: out:
-2
3
1 2
2 3
3 1
in: out:
-42
0
1 1
2 2
3 3
4 4
5 5