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

পাইথনে বাইনারি গ্যাপ (Binary Gap) নির্ণয়


সমস্যা বিবরণ

একটি ধনাত্মক পূর্ণসংখ্যা N দেওয়া থাকলে, তার বাইনারি রিপ্রেজেন্টেশনে দুটি последовательviens ১-এর মধ্যে সর্বোচ্চ দূরত্ব খুঁজে বের করতে হবে। যদি দুটি последовательviens ১ না থাকে, তবে ০ রিটার্ন করুন।

উদাহরণ

ইনপুট: 22 → আউটপুট: 2

কারণ ২২-এর বাইনারি = 10110। এখানে তিনটি ১ আছে। প্রথম দুটি ১-এর মধ্যে দূরত্ব ২ (অবস্থান ০ এবং ২), দ্বিতীয় জোড়ার দূরত্ব ১ (অবস্থান ২ এবং ৩)। সর্বোচ্চ দূরত্ব = ২।

এলগরিদম

  1. N-এর বাইনারি বিটগুলো একটি লিস্টে সংরক্ষণ করুন (K)।
  2. Max = 0, C = 0 (প্রথম ১-এর ইনডেক্স), Flag = False দিয়ে আরম্ভ করুন।
  3. K-এর প্রতিটি বিটের জন্য লুপ চালান:
    • যদি বিটটি '১' হয় এবং C == 0 এবং Flag == False → C = i, Flag = True।
    • অন্যথায়, যদি বিটটি '১' হয় এবং Flag == True → S = i, Max = max(Max, |S - C|), তারপর C = S।
  4. শেষে Max রিটার্ন করুন।

পাইথন বাস্তবায়ন

class Solution:
    def binaryGap(self, N):
        B = bin(N).replace('0b', '')
        K = list(B)
        Max = 0
        C = 0
        S = 0
        Flag = False
        for i in range(len(K)):
            if K[i] == '1' and C == 0 and Flag == False:
                C = i
                Flag = True
            elif K[i] == '1' and Flag:
                S = i
                if Max < abs(S - C):
                    Max = abs(S - C)
                C = S
        return Max

ob = Solution()
print(ob.binaryGap(22))  # আউটপুট: 2

ইনপুট / আউটপুট

ইনপুট: 22
আউটপুট: 2
  1. পাইথনে বাইনারি ট্রি কলারিং গেম

  2. পাইথনে জিগজ্যাগ লেবেল্ড বাইনারি ট্রিতে পাথ খুঁজে বের করা

  3. পাইথনে বাইনারি ট্রির ডায়ামিটার

  4. পাইথনে বাইনারি ট্রি ইনভার্ট (Invert Binary Tree)