एक संतुलित स्ट्रिंग कोष्ठक का एक तार है ()
ताकि हर कोष्ठक को दूसरे के साथ मिलान किया जा सके। और अधिक कठोरता से वे इस व्याकरण द्वारा फैलाए गए तार हैं:
S → (S)S | ε
हम एक स्ट्रिंग "अंदर बाहर" द्वारा बदल सकते हैं:
की सभी घटनाओं की स्विचिंग
(
और)
एक दूसरे के साथस्ट्रिंग के सामने से पीछे तक पात्रों को तब तक ले जाना जब तक स्ट्रिंग फिर से संतुलित न हो जाए।
एक उदाहरण देते हैं।
हम संतुलित स्ट्रिंग के साथ शुरू करते हैं:
(()(())())
हम तो बनाने के लिए Parens स्विच
))())(()((
फिर स्ट्रिंग के सामने से स्ट्रिंग के पीछे तक वर्णों को स्थानांतरित करें जब तक कि स्ट्रिंग संतुलित न हो जाए।
))())(()((
)())(()(()
())(()(())
))(()(())(
)(()(())()
(()(())())
हमारे परिणाम Thats!
ध्यान दें कि कुछ तारों को कई तरीकों से अंदर बाहर किया जा सकता है, उदाहरण के लिए स्ट्रिंग
(()())
जब अंदर से बाहर निकला तो या तो हो सकता है:
()(())
या
(())()
हालांकि हर स्ट्रिंग में कम से कम एक समाधान होता है ।
कार्य
एक संतुलित स्ट्रिंग को इनपुट और आउटपुट के रूप में लेने के लिए एक प्रोग्राम लिखें जो स्ट्रिंग अंदर से बाहर निकला हो। ऐसे मामलों में जहां कई वैध आउटपुट हो सकते हैं, आपको उनमें से केवल एक आउटपुट की आवश्यकता होती है। यदि आप चाहें तो आप एक अलग ब्रेस प्रकार ( <>
, []
या {}
) का उपयोग कर सकते हैं ।
यह एक कोड-गोल्फ प्रतियोगिता है, इसलिए आपको अपने स्रोत कोड के आकार को कम करने का लक्ष्य रखना चाहिए, जैसा कि बाइट्स द्वारा मापा जाता है।
परीक्षण के मामलों
(()()) -> ()(()), (())()
(()(())()) -> (()(())())
((())())() -> (()(()()))