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