Piet ist aus mehreren Gründen eine interessante Programmiersprache. Heute konzentrieren wir uns auf einen Grund: den Rollbefehl . Der Befehl roll stammt ursprünglich aus PostScript und bietet eine leistungsstarke Möglichkeit, den Stapel zu bearbeiten.
Der Befehl roll fügt die beiden obersten Elemente des Stapels ein und verwendet sie als Parameter. Wir werden den ersten turns
und den zweiten Wert als geknallt bezeichnen depth
. Eine Drehung in die Tiefe n nimmt das oberste Element des Stapels auf, macht es zum n-ten Element im Stapel und verschiebt jedes der darüber liegenden Elemente um eins nach oben. Wenn turns
negativ, erfolgt dies in umgekehrter Richtung. Das heißt, das n-te Element wird nach oben und die anderen Elemente nach unten verschoben. Dies wird mehrfach wiederholt abs(turns)
.
Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die einen Stack aufnimmt und diesen Stack nach Ausführung eines Rolls zurückgibt.
Regeln
- Die Ein- und Ausgabe kann in einer Liste, einem Array, einer Zeichenfolge mit Trennzeichen, jeweils in einem Element oder in einem anderen vernünftigen Format erfolgen. Die Ausgabe muss dasselbe Format wie die Eingabe haben.
depth
wird niemals negativ sein und wird niemals größer als die Länge des Stapels.- Der Eingabestapel enthält immer mindestens zwei Elemente.
- Das ist Code-Golf, also gewinnt die kürzeste Antwort in jeder Sprache. Daher werde ich keine Antwort annehmen.
- Standardlücken sind verboten.
Testfälle
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