ধরুন আমাদের একটি সংখ্যার সংখ্যা আছে, আমাদের পরীক্ষা করতে হবে যে 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