ভারসাম্যযুক্ত স্ট্রিং হল প্রথম বন্ধনীগুলির একটি স্ট্রিং ()
যাতে প্রতিটি প্যারেনসিসটি অন্য একটির সাথে মিলে যায়। আরও কঠোরভাবে তারা এই ব্যাকরণ দ্বারা বিভক্ত স্ট্রিং:
S → (S)S | ε
আমরা এর দ্বারা একটি স্ট্রিং "ভিতরে আউট" চালু করতে পারি:
এর সমস্ত সংঘটন স্যুইচিং
(
এবং)
একে অপরের সাথেস্ট্রিংটির সামনের দিক থেকে পিছনে অক্ষরগুলি সরানো না হওয়া পর্যন্ত স্ট্রিংটি আবার ভারসাম্য না হওয়া পর্যন্ত।
একটি উদাহরণ দেয়।
আমরা ভারসাম্যযুক্ত স্ট্রিং দিয়ে শুরু করি:
(()(())())
তারপরে আমরা পেরেনগুলি তৈরি করতে স্যুইচ করি
))())(()((
তারপরে স্ট্রিংয়ের ভারসাম্য না হওয়া পর্যন্ত স্ট্রিংয়ের সামনের দিক থেকে স্ট্রিংয়ের পিছনে অক্ষরগুলি সরিয়ে দিন।
))())(()((
)())(()(()
())(()(())
))(()(())(
)(()(())()
(()(())())
আমাদের রেজাল্ট!
নোট করুন যে কয়েকটি স্ট্রিং একাধিক উপায়ে অভ্যন্তরে পরিণত করা যেতে পারে, উদাহরণস্বরূপ স্ট্রিং
(()())
যখন ভিতরে ঘুরিয়ে দেওয়া হয় তা হতে পারে:
()(())
অথবা
(())()
তবে প্রতিটি স্ট্রিংয়ের কমপক্ষে একটি সমাধান থাকে ।
কার্য
ইনপুট এবং আউটপুট হিসাবে ভারসাম্য স্ট্রিংটি নেওয়ার জন্য একটি প্রোগ্রাম লিখুন যা স্ট্রিংটি ভিতরে পরিণত হয়েছিল। একাধিক বৈধ আউটপুট থাকতে পারে এমন ক্ষেত্রে আপনার কেবলমাত্র একটি আউটপুট প্রয়োজন। আপনি একটি ভিন্ন বক্রবন্ধনী টাইপ ব্যবহার করতে পারি ( <>
, []
বা {}
) যদি আপনি তা চান।
এটি একটি কোড-গল্ফ প্রতিযোগিতা তাই বাইট দ্বারা পরিমাপ করা হিসাবে আপনার উত্স কোডের আকারটি হ্রাস করার লক্ষ্য করা উচিত।
পরীক্ষার মামলা
(()()) -> ()(()), (())()
(()(())()) -> (()(())())
((())())() -> (()(()()))