Piet é uma linguagem de programação interessante por várias razões. Hoje vamos nos concentrar em um motivo: o comando roll . O comando roll foi originalmente do PostScript e é uma maneira poderosa de manipular a pilha.
O comando roll exibe os dois principais elementos da pilha e os utiliza como parâmetros. Vamos chamar o primeiro valor popped turns
e o segundo depth
. Uma volta para a profundidade n pega o elemento mais alto da pilha, torna-o o enésimo elemento na pilha e move cada um dos elementos acima dela para cima um. Se turns
for negativo, isso é feito na direção oposta. Ou seja, o enésimo elemento é movido para o topo e os outros elementos são movidos para baixo. Isso é repetido abs(turns)
vezes.
Desafio
Escreva um programa ou função que pegue uma pilha e retorne essa pilha depois de executar um rolo.
Regras
- A entrada e a saída podem estar em uma lista, matriz, sequência com um delimitador, transmitidos em um elemento por vez ou em qualquer outro formato razoável. A saída deve estar no mesmo formato que a entrada.
depth
nunca será negativo e nunca será maior que o comprimento da pilha.- A pilha de entrada sempre conterá pelo menos dois elementos.
- Isso é código-golfe, então a resposta mais curta em cada idioma vence. Como tal, não aceitarei uma resposta.
- As brechas padrão são proibidas.
Casos de teste
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