वहाँ हैं कुछ सवाल इस साइट पर कोष्ठक संतुलन, और यह जांच करें कि क्या कोष्ठक संतुलित कर रहे हैं के बारे में। मैं प्रस्ताव करता हूं कि अब उन संतुलित कोष्ठकों का उपयोग किसी चीज़ के लिए करने का समय है!
गणित और प्रोग्रामिंग में, कोष्ठक बुलबुले की तरह होते हैं, हर चीज़ को अंदर से बाहर अलग कर देते हैं ताकि जो भी अंदर हो वह अपनी बात शांति से कर सके और जो कुछ भी बाहर है वह केवल एक वस्तु को देख सके। हालांकि, ब्रैकेट्स की एक स्ट्रिंग एक आयामी है, जबकि बुलबुले आमतौर पर कम से कम दो आयामी होते हैं। इसका मतलब है कि बुलबुले एक दूसरे के आसपास तब तक घूमने के लिए स्वतंत्र हैं जब तक वे एक-दूसरे को स्पर्श नहीं करते हैं या किसी अन्य बुलबुले के अंदर और बाहर के बीच पार नहीं करते हैं।
चुनौती
इनपुट एक प्रकार के मिलान किए गए ब्रैकेट का एक स्ट्रिंग है, या तो गोल ()
, चौकोर []
, घुंघराले {}
या कोण <>
। यह आपके ऊपर है कि आप किस तरह का अपना प्रोग्राम स्वीकार करना चाहते हैं, और एक ऐसा प्रोग्राम जो केवल एक ही तरह के ब्रैकेट को स्वीकार करता है। (काल्पनिक बोनस यदि आपका प्रोग्राम उनमें से किसी को भी संभाल सकता है, तो बड़े पैमाने पर काल्पनिक बोनस अंक यदि यह एक ही इनपुट में उन सभी को संभाल सकता है।) इनपुट में कोष्ठक के बीच कुछ भी नहीं हो सकता है, हालांकि अनुगामी व्हाट्सएप की अनुमति है।
आउटपुट उन सभी कोष्ठकों के सभी संभावित पुनर्गठन (मनमाने क्रम में, और मूल इनपुट सहित) है जो बुलबुले के समान विन्यास को उत्पन्न करते हैं, जिसमें दो समान तार नहीं होते हैं। इसका मतलब है कि इनपुट के साथ ()()
, आउटपुट भी बस है ()()
, भले ही यह तकनीकी रूप से दो बुलबुले हैं जो स्थानों को स्वैप कर सकते हैं। बड़े पैमाने पर काल्पनिक बोनस के लिए, {}[]()
निश्चित रूप से 6 अलग-अलग तत्वों / स्ट्रिंग्स / लाइनों के उत्पादन के लिए इनपुट का नेतृत्व किया जाएगा।
बुलबुले के दो विन्यास "समान" हैं यदि आप बुलबुले को एक दूसरे के चारों ओर ले जाकर दूसरे में बना सकते हैं, बिना किसी बुलबुले को दूसरे बुलबुले के अंदर से बाहर तक, या बाहर से अंदर तक। यदि आप नेस्टेड कोष्ठकों को पेड़ों की तरह पसंद करते हैं (प्रत्येक मिलान की गई जोड़ी एक नोड है, और प्रत्येक मिलान की गई जोड़ी एक सबनोड है, और प्रत्येक मिलान की गई जोड़ी फिर से उन लोगों का उप-कोड है, और इसी तरह) जहां किसी दिए गए नोड के उप-नोड्स का आदेश दिया जाता है। , फिर बुलबुले का एक एकल विन्यास एक पेड़ है जहां नोड्स अव्यवस्थित हैं।
कोई भी उचित आउटपुट फॉर्मेट करेगा, जैसे स्ट्रिंग्स की सूची या एकल वर्णों की सूची की सूची या किसी प्रकार के व्हाट्सएप के साथ एक सिंगल स्ट्रिंग, या प्रिंटिंग के लिए stdout
या stderr
किसी प्रकार के दृश्यमान व्हाट्सएप चरित्र के साथ (सबसे सामान्य रूप से नई पंक्ति या स्थान)। प्रत्येक पुनर्गठन।
प्रत्येक पुनर्गठन और अनुगामी के लिए रिक्त स्थान और वास्तविक उत्पादन से पहले और बाद में newlines / खाली सूची तत्वों को आगे बढ़ाने की अनुमति है। आपको अपने आउटपुट में उसी तरह के ब्रैकेट का उपयोग करना चाहिए जैसा कि आप अपने इनपुट में स्वीकार करते हैं। यहां बताए गए कोष्ठक, नई रेखाओं और रिक्त स्थान के अलावा, और जो भी विभाजक आप उपयोग करते हैं, कुछ भी मुद्रित नहीं होना चाहिए (अदृश्य / शून्य-चौड़ाई वर्ण सहित)।
कोड में स्कोर बाइट्स की संख्या है; प्रत्येक भाषा की जीत के लिए सबसे कम गिनती। आप ध्यान दें कि क्या आपको नियमित या बड़े पैमाने पर काल्पनिक बोनस मिलता है, लेकिन यह आपके स्कोर को प्रभावित नहीं करता है। वास्तविक बोनस सही संतुलन के लिए बहुत कठिन हैं।
इनपुट-आउटपुट उदाहरण
उदाहरण 1:
इनपुट:
()(())
आउटपुट:
()(())
(())()
उदाहरण 2:
इनपुट:
(()())()()
आउटपुट:
(()())()()
()(()())()
()()(()())
उदाहरण 3:
इनपुट:
(()(()))()
आउटपुट:
((())())()
()((())())
(()(()))()
()(()(()))
((()))
उदाहरण 1 में क्यों नहीं मिल सकते हैं ? या()()()
? ऐसा लगता है कि आप प्रत्येक इनपुट के लिए क्रमपरिवर्तन याद कर रहे हैं।