প্রাচীন কিন্তু শক্তিশালী একটি মেইনফ্রেম, Bracketeer™-এর জন্য সফটওয়্যার লেখার সুযোগ পেয়েছেন আপনি। এতে চালানো সফটওয়্যার লেখা হয় একটি মালিকানাধীন ভাষায়। এর সিনট্যাক্সের অনেকটাই চেনা, তবে চোখে পড়ে অনেক বন্ধনী: প্রথম বন্ধনী, দ্বিতীয় বন্ধনী আর তৃতীয় বন্ধনী। Bracketeer™ শক্তিশালী হলেও এর নমনীয়তা নেই। সোর্স কোডে প্রথম, দ্বিতীয় বা তৃতীয় বন্ধনীর কোনোটি ব্যালেন্সড না থাকলে Bracketeer™ ক্র্যাশ করে যায় এবং আবার রিবুট করতে হয়। এমন পরিস্থিতি এড়ানোর জন্য আপনি এমন কোড লেখা শুরু করেন, যা Bracketeer™-এ চালানোর চেষ্টা করার আগেই যাচাই করতে পারে যে প্রথম, দ্বিতীয় ও তৃতীয় বন্ধনী ব্যালেন্সড কি না।
এমন একটি স্ট্রিং দেওয়া আছে যাতে তৃতীয় বন্ধনী [], দ্বিতীয় বন্ধনী {}, প্রথম বন্ধনী () বা এগুলোর যেকোনো সমন্বয় থাকতে পারে; যাচাই করুন যে প্রতিটি জোড়া সঠিকভাবে মিলেছে এবং নেস্টেড হয়েছে। অন্য যেকোনো ক্যারেক্টার উপেক্ষা করা উচিত। উদাহরণস্বরূপ, "{what is (42)}?" ব্যালান্সড, আর "[text}" ব্যালান্সড নয়।
এই অনুশীলনীটি সম্পন্ন করার অনেক উপায় আছে, তবে যারা নিজের অ্যাবিলিটি হ্যান্ডলার নিজে লিখে অনুশীলন করতে চান, তাদের জন্য আমরা কিছু অতিরিক্ত স্টাব দিয়েছি।
এই অনুশীলনীর জন্য দেওয়া checkBalance হেল্পার ফাংশনের সিগনেচার একটি অ্যাবিলিটি রিকোয়ারমেন্ট, {Stack} ব্যবহার করে।
Stack অ্যাবিলিটি আপনার জন্য ডিফাইন করা আছে, কিন্তু হ্যান্ডলার Stack.run নেই!
আপনি চাইলে Stack.run, checkBalance এবং isPaired ফাংশনটি ইমপ্লিমেন্ট করতে পারেন।
আপনি অ্যাবিলিটি দিয়ে এই অনুশীলনীটি ইমপ্লিমেন্ট না করলেও টেস্টগুলো চলবে।
Exercism-এ সাইন আপ করুন, Unison ট্র্যাকের 53টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।