एक ब्रेस स्ट्रिंग को एक स्ट्रिंग के रूप में परिभाषित किया गया है जिसमें अक्षर *()[]
सही ढंग से मेल खाते हैं:
[brace-string] ::= [unit] || [unit] [brace-string]
[unit] ::= "" || "*" || "(" [brace-string] ")" || "[" [brace-string] "]"
यह एक मान्य ब्रेस-स्ट्रिंग है:
((())***[]**)****[(())*]*
लेकिन ये नहीं हैं:
)(
**(**[*](**)
**([*)]**
आपका कार्य एक प्रोग्राम (या फ़ंक्शन) लिखना है, जो एक सकारात्मक पूर्णांक दिया गया है n
, इनपुट के रूप में एक संख्या लेता है और आउटपुट (या रिटर्न) लंबाई के सभी वैध ब्रेस स्ट्रिंग्स n
।
विशेष विवरण
- आप किसी भी क्रम में स्ट्रिंग्स का उत्पादन कर सकते हैं।
- आप एक सूची या एक अलग चरित्र द्वारा अलग किए गए स्ट्रिंग के रूप में आउटपुट कर सकते हैं।
- आपके प्रोग्राम को 0 सही ढंग से संभालना चाहिए। लंबाई 0 का 1 संभावित ब्रेस-स्ट्रिंग है, जो खाली स्ट्रिंग है
""
। - यह कोड-गोल्फ है , इसलिए सबसे छोटा वैध उत्तर - बाइट्स में मापा जाता है - जीतता है।
परीक्षण के मामलों
0.
1. *
2. ** () []
3. *** ()* []* (*) [*] *() *[]
4. **** ()** []** (*)* [*]* (**) **() **[] *(*) *[*] (()) ()() ()[] ([]) [**] [()] [[]] []() [][] *()* *[]*