स्टैक स्थिति आरेख दिखाता है कि एक स्टैक पर मौजूद मान दूसरे में कैसे बदले जाते हैं। उदाहरण के लिए, यह एक स्टैक स्टेट आरेख है:
3 0 2 1 0
इसका मतलब यह है कि शुरू में 3 मान ( 3
भाग) युक्त एक स्टैक है । ये मान 0 से 2 तक अनुक्रमित हैं, शीर्ष पर 0 के साथ 2 1 0
:। अगले भाग 0 2 1 0
में स्टैक की अंतिम स्थिति का वर्णन किया गया है: स्टैक के शीर्ष पर मूल रूप से मान को पीछे की ओर कॉपी किया गया है।
ये परिवर्तन एक स्टैक पर होते हैं जिसमें कई डेटा प्रकारों के लिए समर्थन होता है:
- "मान" प्रकार, जो मूल रूप से स्टैक पर है। यह एक स्ट्रिंग, पूर्णांक, आदि हो सकता है, लेकिन इसके मूल्य को जानने की आवश्यकता नहीं है।
- "सूची" प्रकार, जो किसी भी डेटा प्रकार के मूल्यों से युक्त एक सूची है।
इस परिवर्तन को मॉडल करने के लिए, निम्नलिखित कार्यों की अनुमति है:
S
: स्टैक के शीर्ष पर दो मान स्वैप करें:2 1 0
→2 0 1
D
: स्टैक के शीर्ष पर मूल्य डुप्लिकेट करें:1 0
→1 0 0
R
: स्टैक पर शीर्ष मान निकालें।2 1 0
→2 1
L
: शीर्ष मान को उस मान वाले एक-तत्व सूची में बदल दें:2 1 0
→2 1 (0)
C
: स्टैक पर शीर्ष दो सूचियों को सम्मिलित करें:2 (1) (0)
→2 (1 0)
U
: स्टैक पर एक सूची से सभी मान रखें:2 (1 0)
→2 1 0
ये अंडरलोड कमांड के बराबर हैं ~ : ! a * ^
, बशर्ते कि कोई अन्य कमांड का उपयोग न किया जाए।
S
, D
, R
, और L
ढेर के शीर्ष पर किसी भी मूल्यों के साथ इस्तेमाल किया जा सकता है, लेकिन C
और U
कार्य करने के लिए ढेर के शीर्ष पर सूचियों होना आवश्यक है। एक ऐसा सबमिशन, जिसके जेनरेट किए गए सीक्वेंस अमान्य ऑपरेशंस (जैसे D
खाली स्टैक U
पर या नॉन-लिस्ट) को प्रीफॉर्म करने का प्रयास करते हैं , गलत है और इसे निश्चित रूप से दंडित किया जाना चाहिए ।
स्टैक स्थिति आरेख को हल करने के लिए, एक क्रम का क्रम खोजें जो प्रारंभिक स्टैक स्थिति को सही रूप से नए में बदल देगा। उदाहरण के लिए, इसका एक समाधान 3: 0 2 1 0
है 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
आपका कार्य एक कार्यक्रम लिखना है जो एक स्टैक स्टेट आरेख लेता है और एक समाधान को आउटपुट करता है।
परीक्षण के मामलों
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
यह कोड-गोल्फ है , इसलिए सबसे छोटा वैध उत्तर (बाइट्स में) जीतता है।
C
स्टैक के शीर्ष और दूसरे स्थान पर आवश्यकता सूची है? या दूसरी स्थिति में तत्व शीर्ष पर एक सूची में जोड़ा जा सकता है?
C
दोनों पदों पर सूची की जरूरत है। यह एक मूल्य और एक सूची को समझने के लिए कोई मतलब नहीं है।