Diagram stanu stosu pokazuje, jak wartości z jednego stosu są zamieniane na drugi. Na przykład jest to diagram stanu stosu:
3 0 2 1 0
Oznacza to, że istnieje stos początkowo zawierający 3 wartości ( 3część). Wartości te są indeksowane od 0 do 2, gdzie 0 U góry 2 1 0. Kolejna część 0 2 1 0opisuje końcowy stan stosu: wartość, która była pierwotnie na szczycie stosu, została również skopiowana na drugą stronę.
Te transformacje zachodzą na stosie obsługującym kilka typów danych:
- Typ „wartości”, który pierwotnie znajduje się na stosie. Może to być ciąg, liczba całkowita itp., Ale jego wartość nie musi być znana.
- Typ „list”, czyli lista zawierająca wartości dowolnego typu danych.
Aby modelować tę transformację, dozwolone są następujące operacje:
S: Zamień dwie wartości na górze stosu:2 1 0→2 0 1D: Zduplikuj wartość na górze stosu:1 0→1 0 0R: Usuń najwyższą wartość ze stosu.2 1 0→2 1L: Zamień najwyższą wartość na listę jednoelementową zawierającą tę wartość:2 1 0→2 1 (0)C: Połącz dwie pierwsze listy na stosie:2 (1) (0)→2 (1 0)U: Umieść wszystkie wartości z listy na stosie:2 (1 0)→2 1 0
Są równoważne UNDERLOAD poleceń ~ : ! a * ^, pod warunkiem, że żadne inne polecenia są wykorzystywane.
S, D, R, I Lmoże być używany z dowolnym wartości na szczycie stosu, ale Ci Umuszą mieć list na wierzchu stosu funkcjonować. Przesłanie, którego wygenerowane sekwencje próbują wykonać nieprawidłowe operacje (np. DNa pustym stosie lub Una liście nie znajdującej się na liście) jest błędne i musi zostać ukarane .
Aby rozwiązać diagram stanu stosu, znajdź sekwencję poleceń, które poprawnie przekształcą początkowy stan stosu w nowy. Na przykład jednym z rozwiązań 3: 0 2 1 0jest 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
Twoim zadaniem jest napisanie programu, który pobierze diagram stanu stosu i wyświetli rozwiązanie.
Przypadki testowe
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
To jest golf golfowy , więc wygrywa najkrótsza ważna odpowiedź (w bajtach).
Clisty potrzeb na górnej i drugiej pozycji stosu? czy element na drugiej pozycji można dodać do listy na górze?
Cpotrzebuje list na obu pozycjach. Łączenie wartości i listy nie ma sensu.