কম্পিউটার টিউটোরিয়াল

পাইথনে সংখ্যার বাইনারি রিপ্রেজেন্টেশনে ক্রমাগত ১-এর ব্লক ক্রমবর্ধমান কিনা

একটি পজিটিভ সংখ্যা n দেওয়া আছে। এর বাইনারি রিপ্রেজেন্টেশনে বাম থেকে ডান ক্রমাগত ১-এর ব্লক들의 দৈর্ঘ্য ক্রমবর্ধমান (increasing) কিনা যাচাই করতে হবে।

উদাহরণ

ইনপুট: n = 1775

আউটপুট: True

ব্যাখ্যা: ১৭৭৫ = 11011101111 (বাইনারি), ব্লক দৈর্ঘ্য: ২, ৩, ৪ (ক্রমবর্ধমান)।

অ্যালগরিদম

  1. বাইনারি স্ট্রিং বানান।
  2. ক্রমাগত ১ গুনুন, ০ পাওয়া গেলে ব্লক দৈর্ঘ্য সংরক্ষণ করুন।
  3. প্রতিটি ব্লক দৈর্ঘ্য পূর্ববর্তী ব্লক থেকে বড় কিনা চেক করুন।

উদাহরণ কোড

def solve(n):
    bits_pattern = list(bin(n))
    bit_count = len(bits_pattern)
    p_cnt = 0
    c_cnt = 0
    i = 0
    while i < bit_count:
        if bits_pattern[i] == '1':
            c_cnt += 1
            i += 1
        elif bits_pattern[i - 1] == '0':
            i += 1
            c_cnt = 0
            continue
        else:
            if c_cnt < p_cnt:
                return False
            i += 1
            p_cnt = c_cnt
            c_cnt = 0
    if p_cnt > c_cnt and c_cnt != 0:
        return False
    return True

n = 1775
print(solve(n))  # Output: True

ইনপুট

1775

আউটপুট

True
  1. কনসিকিউটিভ ১ ছাড়া বাইনারি স্ট্রিংয়ের সংখ্যা গণনা করার পাইথন প্রোগ্রাম

  2. পাইথন লিস্ট কম্প্রিহেনশন ব্যবহার করে সেট বিট কাউন্ট করা

  3. পাইথন প্রোগ্রাম: ১ থেকে n পর্যন্ত সকল সংখ্যার টোটাল সেট বিট গণনা

  4. পাইথনে একটি সংখ্যার টোটাল বিট গণনা করার প্রোগ্রাম