Diagram keadaan tumpukan menunjukkan bagaimana nilai pada satu tumpukan diubah menjadi yang lain. Sebagai contoh, ini adalah diagram status tumpukan:
3 0 2 1 0
Ini berarti ada tumpukan yang awalnya berisi 3 nilai ( 3bagian). Nilai-nilai ini diindeks dari 0 sampai 2, dengan 0 di bagian atas: 2 1 0. Bagian selanjutnya 0 2 1 0menjelaskan keadaan akhir stack: nilai yang semula di atas stack telah disalin ke belakang juga.
Transformasi ini terjadi pada tumpukan yang memiliki dukungan untuk beberapa tipe data:
- Jenis "nilai", yang merupakan aslinya pada tumpukan. Ini bisa berupa string, integer, dll. Tetapi nilainya tidak perlu diketahui.
- Tipe "daftar", yang merupakan daftar yang berisi nilai dari semua tipe data.
Untuk memodelkan transformasi ini, operasi berikut diizinkan:
S: Tukar kedua nilai di atas tumpukan:2 1 0→2 0 1D: Gandakan nilai di atas tumpukan:1 0→1 0 0R: Hapus nilai teratas pada tumpukan.2 1 0→2 1L: Ubah nilai teratas menjadi daftar satu elemen yang berisi nilai itu:2 1 0→2 1 (0)C: Menggabungkan dua daftar teratas di tumpukan:2 (1) (0)→2 (1 0)U: Tempatkan semua nilai dari daftar ke tumpukan:2 (1 0)→2 1 0
Ini sama dengan perintah Underload~ : ! a * ^ , asalkan tidak ada perintah lain yang digunakan.
S, D, R, Dan Ldapat digunakan dengan nilai-nilai di atas tumpukan, namun Cdan Uharus memiliki daftar di atas tumpukan untuk fungsi. Kiriman yang urutan urutannya dihasilkan mencoba untuk membentuk operasi yang tidak valid (seperti Dpada tumpukan kosong atau Upada non-daftar) salah dan harus dihukum diperbaiki.
Untuk memecahkan diagram keadaan tumpukan, temukan urutan perintah yang akan mengubah keadaan tumpukan awal dengan benar menjadi yang baru. Sebagai contoh, salah satu solusinya 3: 0 2 1 0adalah LSLCSLCULSLCLSLDCSC USLCU:
2 1 0
L 2 1 (0)
S 2 (0) 1
L 2 (0) (1)
C 2 (0 1)
S (0 1) 2
L (0 1) (2)
C (0 1 2)
U 0 1 2
L 0 1 (2)
S 0 (2) 1
L 0 (2) (1)
C 0 (2 1)
L 0 ((2 1))
S ((2 1)) 0
L ((2 1)) (0)
D ((2 1)) (0) (0)
C ((2 1)) (0 0)
S (0 0) ((2 1))
C (0 0 (2 1))
U 0 0 (2 1)
S 0 (2 1) 0
L 0 (2 1) (0)
C 0 (2 1 0)
U 0 2 1 0
Tugas Anda adalah menulis sebuah program yang mengambil diagram status tumpukan dan menghasilkan solusi.
Uji Kasus
2 1 0 ->
3 2 0 -> SR
9 -> RRRRRRRRR
2 0 1 0 -> LSLCDCUR
2 0 1 1 -> SD
6 2 -> RRSRSRSR
5 0 1 2 3 4 -> LSLCSLCSLCSLCU
4 2 0 1 3 2 -> LSLCSLSCSLCULSLSCSLSCLSLDCSCUSLCU
Ini adalah kode-golf , sehingga jawaban terpendek yang valid (dalam byte) menang.
Cdaftar kebutuhan berada di posisi teratas dan kedua stack? atau elemen di posisi kedua dapat ditambahkan ke daftar di atas?
Cperlu daftar di kedua posisi. Tidak masuk akal untuk menggabungkan nilai dan daftar.