Piet - цікава мова програмування з кількох причин. Сьогодні ми зупинимося на одній причині: команді roll . Команда roll була спочатку від PostScript і є потужним способом маніпулювання стеком.
Команда roll вискакує два верхні елементи стека і використовує їх як параметри. Ми будемо називати перше значення спливаючим, turns
а друге depth
. Поворот на глибину n займе верхній елемент стека, зробить його n-м елементом в стеку і перемістить кожен з елементів над ним вгору по одному. Якщо turns
негативно, це робиться у зворотному напрямку. Тобто, n-й елемент переміщується вгору, а інші елементи переміщуються вниз. Це повторюється abs(turns)
раз.
Виклик
Напишіть програму або функцію, яка займає стек і повертає її після виконання рулону.
Правила
- Введення та вихід можуть бути у списку, масиві, рядку з роздільником, що передаються в одному елементі, або будь-якому іншому розумному форматі. Вихід повинен бути у тому ж форматі, що і вхідний.
depth
ніколи не буде негативним і ніколи не буде більше довжини стека.- Вхідний стек завжди буде містити щонайменше два елементи.
- Це код-гольф, тому найкоротша відповідь на кожній мові виграє. Я не буду приймати відповідь.
- Стандартні лазівки заборонені.
Випробування
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