Yığın durumu diyagramı, bir yığındaki değerlerin diğerine nasıl değiştirildiğini gösterir. Örneğin, bu bir yığın durumu diyagramıdır:
3 0 2 1 0
Bu başlangıçta 3 değer ( 3parça) içeren bir yığın olduğu anlamına gelir . Bu değerler, en az 0 ile 0 ila 2 dizinlenmiştir: 2 1 0. Bir sonraki bölüm 0 2 1 0, yığının son durumunu açıklar: başlangıçta yığının üstünde bulunan değer de arkaya kopyalanır.
Bu dönüşümler, çeşitli veri türlerini destekleyen bir yığın üzerinde gerçekleşir:
- Başlangıçta yığında bulunan "değer" türü. Bu bir dize, tamsayı vb. Olabilir, ancak değerinin bilinmesine gerek yoktur.
- Herhangi bir veri türünün değerlerini içeren bir liste olan "liste" türü.
Bu dönüşümü modellemek için aşağıdaki işlemlere izin verilir:
S: Yığının üstündeki iki değeri değiştirin:2 1 0→2 0 1D: Yığının üstündeki değeri çoğaltın:1 0→1 0 0R: Yığındaki en yüksek değeri kaldırın.2 1 0→2 1L: En üst değeri, bu değeri içeren tek öğeli bir listeye dönüştürün:2 1 0→2 1 (0)C: Yığındaki ilk iki listeyi birleştirin:2 (1) (0)→2 (1 0)U: Bir listedeki tüm değerleri yığına yerleştirin:2 (1 0)→2 1 0
Bunlar, başka hiçbir komut kullanılmadığı sürece Düşük Yük komutlarına eşdeğerdir ~ : ! a * ^.
S, D, RVe Lyığının üstüne herhangi bir değeri ile birlikte kullanılabilir, ancak Cve Uişlevine yığının en listelerinin olmalıdır. Olan Üretilen diziler (geçersiz şu işlemleri preform girişimi bir gönderme Dboş yığın halinde veya Uolmayan bir listede) olduğu yanlış olmalıdır ve cezalandırılan sabit.
Bir yığın durumu diyagramını çözmek için, ilk yığın durumunu doğru şekilde yenisine dönüştürecek bir komut dizisi bulun. Örneğin, çözümlerden 3: 0 2 1 0biri 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
Göreviniz, yığın durumu diyagramı alan ve çözüm üreten bir program yazmaktır.
Test Durumları
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
Bu kod golf , bu yüzden en kısa geçerli cevap (bayt cinsinden) kazanır.
Cyığının üst ve ikinci pozisyona ihtiyaç listelerini? veya ikinci konumdaki eleman üstteki listeye eklenebilir mi?
Cher iki konumda da listeler gerekiyor. Bir değeri ve listeyi birleştirmek mantıklı değildir.