Piet là một ngôn ngữ lập trình thú vị vì một số lý do. Hôm nay chúng ta sẽ tập trung vào một lý do: lệnh roll . Lệnh roll ban đầu là từ PostScript và là một cách mạnh mẽ để thao tác ngăn xếp.
Lệnh roll xuất hiện hai phần tử trên cùng của ngăn xếp và sử dụng chúng làm tham số. Chúng tôi sẽ gọi giá trị đầu tiên xuất hiện turns
và giá trị thứ hai depth
. Việc chuyển sang độ sâu n sẽ lấy phần tử trên cùng của ngăn xếp, biến nó thành phần tử thứ n trong ngăn xếp và di chuyển từng phần tử bên trên nó lên trên một phần tử. Nếu turns
là tiêu cực, điều này được thực hiện theo hướng ngược lại. Đó là, phần tử thứ n được di chuyển lên trên cùng và các phần tử khác được di chuyển xuống. Đây là lần lặp lại abs(turns)
.
Thử thách
Viết chương trình hoặc hàm nhận trong ngăn xếp và trả về ngăn xếp đó sau khi thực hiện cuộn.
Quy tắc
- Đầu vào và đầu ra có thể ở trong một danh sách, mảng, chuỗi có dấu phân cách, được truyền vào một phần tử tại một thời điểm hoặc bất kỳ định dạng hợp lý nào khác. Đầu ra phải có cùng định dạng với đầu vào.
depth
sẽ không bao giờ âm và sẽ không bao giờ lớn hơn chiều dài của ngăn xếp.- Ngăn xếp đầu vào sẽ luôn chứa ít nhất hai yếu tố.
- Đây là môn đánh gôn, vì vậy câu trả lời ngắn nhất trong mỗi ngôn ngữ sẽ thắng. Như vậy, tôi sẽ không chấp nhận một câu trả lời.
- Sơ hở tiêu chuẩn bị cấm.
Các trường hợp thử nghiệm
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