ধরুন আমাদের একটি সংখ্যার সংখ্যা আছে, আমাদের পরীক্ষা করতে হবে যে num-এর বাইনারি উপস্থাপনায় একই সংখ্যক পরপর ব্লক 0 এবং 1s আছে কিনা। আমাদের মনে রাখতে হবে যে 0 এবং সমস্ত 1s সহ একটি সংখ্যাকে 0 এবং 1s ব্লকের সংখ্যা হিসাবে বিবেচনা করা হয় না৷
সুতরাং, যদি ইনপুটটি num =455 এর মত হয়, তাহলে আউটপুটটি True হবে, কারণ এই সংখ্যাটির বাইনারি উপস্থাপনা হল 111000111।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- bin_form :=সংখ্যার বাইনারি ফর্ম
- one_count :=একটি নতুন সেট
- গণনা :=1 bin_form - 1-এর 0 থেকে বিট কাউন্টের রেঞ্জের জন্য
- করুন
- যদি bin_form[i] bin_form[i + 1] এর মত হয়, তাহলে
- গণনা :=গণনা + 1
- অন্যথায়,
- এক_গণনায় গণনা ঢোকান
- গণনা :=1
- যদি bin_form[i] bin_form[i + 1] এর মত হয়, তাহলে
- যদি one_count এর আকার 1 এর সমান হয়, তাহলে
- সত্য ফেরান
- মিথ্যে ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ কোড
def solve(num): bin_form = bin(num).replace("0b", "") one_count = set() count = 1 for i in range(len(bin_form)-1): if bin_form[i] == bin_form[i + 1]: count += 1 else: one_count.add(count) count = 1 if len(one_count) == 1: return True return False num = 455 print(solve(num))
ইনপুট
455
আউটপুট
True