आपको Bracketeer™ के लिए सॉफ्टवेयर लिखने का मौका मिला है, जो एक पुराना लेकिन शक्तिशाली मेनफ्रेम है। इस पर चलने वाला सॉफ्टवेयर एक निजी भाषा में लिखा जाता है। इस भाषा का बहुत सारा सिंटैक्स परिचित लगता है, लेकिन आप देखते हैं कि इसमें ढेरों चौकोर ब्रैकेट, ब्रेस और गोल ब्रैकेट हैं। Bracketeer™ बहुत शक्तिशाली होने के बावजूद लचीला नहीं है। अगर सोर्स कोड में चौकोर ब्रैकेट, ब्रेस या गोल ब्रैकेट संतुलित नहीं हैं, तो Bracketeer™ क्रैश हो जाता है और उसे रीबूट करना पड़ता है। ऐसी परिस्थिति से बचने के लिए आप एक ऐसा कोड लिखना शुरू करते हैं जो यह जाँच सके कि चौकोर ब्रैकेट, ब्रेस और गोल ब्रैकेट संतुलित हैं या नहीं। इसकी जाँच के बाद ही आप उस कोड को Bracketeer™ पर चलाने की कोशिश करते हैं।
एक स्ट्रिंग दी गई है जिसमें चौकोर ब्रैकेट [], घुंघराले ब्रैकेट {}, गोल ब्रैकेट () या इनका कोई भी मेल हो सकता है। जाँचिए कि इनके सभी जोड़े ठीक से मिले हुए हैं और सही तरीके से नेस्टेड हैं।
बाकी सभी अक्षरों पर ध्यान न दीजिए।
जैसे, "{what is (42)}?" संतुलित है और "[text}" नहीं है।
इस अभ्यास को पूरा करने के कई तरीके हैं, लेकिन जो लोग खुद अपने एबिलिटी हैंडलर लिखने का अभ्यास करना चाहते हैं, उनके लिए हमने कुछ अतिरिक्त स्टब दिए हैं।
इस अभ्यास में दिए गए checkBalance हेल्पर फंक्शन की सिग्नेचर एक एबिलिटी रिक्वायरमेंट, {Stack} का उपयोग करती है।
Stack एबिलिटी आपके लिए बनाई गई है, लेकिन हैंडलर Stack.run नहीं है!
अगर आप चाहें, तो आप Stack.run, checkBalance और isPaired फंक्शन कार्यान्वित कर सकते हैं।
भले ही आप इस अभ्यास को एबिलिटी की मदद से कार्यान्वित न करें, टेस्ट फिर भी चलेंगे।