ट्रैक
/
Tcl
Tcl
/
अभ्यास
/
ब्रैकेट का मिलान
ब्रैकेट का मिलान

ब्रैकेट का मिलान

आसान

परिचय

आपको Bracketeer™ के लिए सॉफ्टवेयर लिखने का मौका मिला है, जो एक पुराना लेकिन शक्तिशाली मेनफ्रेम है। इस पर चलने वाला सॉफ्टवेयर एक निजी भाषा में लिखा जाता है। इस भाषा का बहुत सारा सिंटैक्स परिचित लगता है, लेकिन आप देखते हैं कि इसमें ढेरों चौकोर ब्रैकेट, ब्रेस और गोल ब्रैकेट हैं। Bracketeer™ बहुत शक्तिशाली होने के बावजूद लचीला नहीं है। अगर सोर्स कोड में चौकोर ब्रैकेट, ब्रेस या गोल ब्रैकेट संतुलित नहीं हैं, तो Bracketeer™ क्रैश हो जाता है और उसे रीबूट करना पड़ता है। ऐसी परिस्थिति से बचने के लिए आप एक ऐसा कोड लिखना शुरू करते हैं जो यह जाँच सके कि चौकोर ब्रैकेट, ब्रेस और गोल ब्रैकेट संतुलित हैं या नहीं। इसकी जाँच के बाद ही आप उस कोड को Bracketeer™ पर चलाने की कोशिश करते हैं।

निर्देश

एक स्ट्रिंग दी गई है जिसमें चौकोर ब्रैकेट [], घुंघराले ब्रैकेट {}, गोल ब्रैकेट () या इनका कोई भी मेल हो सकता है। जाँचिए कि इनके सभी जोड़े ठीक से मिले हुए हैं और सही तरीके से नेस्टेड हैं। बाकी सभी अक्षरों पर ध्यान न दीजिए। जैसे, "{what is (42)}?" संतुलित है और "[text}" नहीं है।

Tcl एक बहुत ही आसान भाषा है, लेकिन इसके इंटरप्रेटर के कोड पढ़ने के तरीके में कुछ पेचीदा एज केस हैं।

घुंघराले ब्रैकेट

Tcl में घुंघराले ब्रैकेट का काम टेक्स्ट के एक ब्लॉक को उद्धृत करना भर है। उस टेक्स्ट को कोड या डेटा की तरह पढ़ा जा सकता है। ब्रैकेट के अंदर नेस्टेड ब्रैकेट भी आ सकते हैं, लेकिन नेस्टेड ब्रैकेट संतुलित होने चाहिए। Tcl के मैन पेज में यह लिखा है:

ब्रैकेट शब्द के अंदर एक के अंदर एक आ सकते हैं: हर अतिरिक्त खुले ब्रैकेट के लिए एक अतिरिक्त बंद ब्रैकेट होना चाहिए (लेकिन अगर शब्द के अंदर कोई खुला या बंद ब्रैकेट बैकस्लैश से उद्धृत हो, तो मेल खाते बंद ब्रैकेट को पहचानते समय उसे गिना नहीं जाता)।

वहाँ लिखी बात बहुत स्पष्ट है: अगर आपको कोई ऐसा खुला या बंद ब्रैकेट चाहिए जिसका जोड़ा न हो, तो उसे बैकस्लैश से उद्धृत करना ज़रूरी है। तो ऐसा न कीजिए:

proc isOpenBrace {char} {
    return [expr {$char eq "{"}]
    # ......................^ will not work
}

आपको ऐसा करना होगा

proc isOpenBrace {char} {
    return [expr {$char eq "\{"}]
    # ......................^^ will work
}

Tcl कमेंट को जिस तरह पढ़ता है वह ज़्यादातर भाषाओं से अलग होता है, इसलिए यह मामला पेचीदा हो सकता है। इस पर Tcl विकि पर और चर्चा है।

चौकोर ब्रैकेट

इसी तरह, Tcl ब्रैकेट का इस्तेमाल कमांड सब्स्टिट्यूशन के लिए करता है, इसलिए डबल कोट्स वाली स्ट्रिंग के अंदर भी खुले ब्रैकेट को एस्केप करते समय सावधानी रखनी पड़ती है।

गोल ब्रैकेट

एसोसिएटिव ऐरे वेरिएबलो को छोड़कर, गोल ब्रैकेट बस आम अक्षर होते हैं।


स्रोत

Ginna Baker
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Tcl Exercism

ब्रैकेट का मिलान शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Tcl को 135 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।