एक प्रोग्राम लिखें जो ()[]
इन बिंदुओं को पूरा करने वाले चार वर्णों की एक स्ट्रिंग में लेता है :
- हर बाईं कोष्ठक
(
में एक मिलान दाईं कोष्ठक होता है)
। - हर बायीं ब्रैकेट
[
में एक मैचिंग राइट ब्रैकेट होता है]
। - कोष्ठक और कोष्ठक के जोड़े का मिलान नहीं होगा। उदाहरण
[(])
अमान्य है क्योंकि मिलान करने वाले कोष्ठक पूरी तरह से मेल खाते हुए कोष्ठकों में सम्मिलित नहीं हैं, न ही इसके विपरीत। - प्रथम और अंतिम वर्ण कोष्ठक या कोष्ठक की एक जोड़ी है। तो
([]([]))
और[[]([])]
मान्य हैं, लेकिन[]([])
नहीं है।
( इनपुट प्रारूप के लिए एक व्याकरण है <input> ::= [<input>*] | (<input>*)
।)
कोष्ठक और कोष्ठक मिलान की प्रत्येक जोड़ी एक गैर-नकारात्मक पूर्णांक का मूल्यांकन करती है:
- कोष्ठक के मिलान के अंदर जोड़े के मूल्य सभी अभिव्यक्त किए गए हैं । खाली मैच
()
का मूल्य है0
। - मिलान ब्रैकेट के अंदर जोड़े के मूल्य सभी गुणा हैं । खाली मैच
[]
का मूल्य है1
।
( एक संख्या का योग या उत्पाद एक ही संख्या है।)
उदाहरण के लिए, ([](())([][])[()][([[][]][][])([][])])
नीचे तोड़ा और मूल्यांकन किया जा सकता है 9
:
([](())([][])[()][([[][]][][])([][])]) <input>
(1 (0 )(1 1 )[0 ][([1 1 ]1 1 )(1 1 )]) <handle empty matches>
(1 0 2 0 [(1 1 1 )2 ]) <next level of matches>
(1 0 2 0 [3 2 ]) <and the next>
(1 0 2 0 6 ) <and the next>
9 <final value to output>
एक और उदाहरण:
[([][][][][])([][][])([][][])(((((([][]))))))] <input>
[(1 1 1 1 1 )(1 1 1 )(1 1 1 )((((((1 1 ))))))]
[5 3 3 (((((2 )))))]
[5 3 3 ((((2 ))))]
[5 3 3 (((2 )))]
[5 3 3 ((2 ))]
[5 3 3 (2 )]
[5 3 3 2 ]
90 <output>
आपके प्रोग्राम को संपूर्ण इनपुट स्ट्रिंग द्वारा प्रस्तुत पूर्णांक का मूल्यांकन और प्रिंट करने की आवश्यकता है। आप मान सकते हैं कि इनपुट वैध है। बाइट्स में सबसे छोटा कोड जीतता है।
एक कार्यक्रम के बजाय, आप एक फ़ंक्शन लिख सकते हैं जो एक स्ट्रिंग में प्रिंट करता है और पूर्णांक देता है।