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

পাইথনে সাজানোর সমান বিট সরানোর অপারেশন গণনা করার প্রোগ্রাম


মান लीজিয়ে আমাদের কাছে একটি বাইনারি স্ট্রিং s আছে। এখন একটি অপারেশন বিবেচনা করুন যেখানে আমরা একটি বিট সিলেক্ট করি এবং তার মান ০ থেকে ১ বা ১ থেকে ০ ফ্লিপ করি। আমাদের এমন একটি স্ট্রিং পেতে হবে যাতে কোনো তিনটি সমান ক্রমাগত বিট নেই। সেজন্য ন্যূনতম কতগুলো অপারেশন দরকার তা বের করতে হবে।

উদাহরণস্বরূপ, ইনপুট যদি s = "10011100" হয়, তবে আউটপুট হবে ১, কারণ আমরা ৪ নম্বর ইনডেক্সের ১ কে ০ ফ্লিপ করে স্ট্রিং "10010100" বানাতে পারি যেখানে তিনটি ক্রমাগত সমান বিট নেই।

এটি সমাধান করার জন্য নিচের ধাপগুলো অনুসরণ করব:

  • l := 0, count := 0
  • যখন l < s-র সাইজ, লুপ চালান:
    • r := l
    • যখন r < s-র সাইজ এবং s[r] == s[l], লুপ চালান:
      • r := r + 1
    • count := count + floor((r - l) / 3)
    • l := r
  • count রিটার্ন করুন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝতে:

def solve(s):
    l = 0
    count = 0
    while l < len(s):
        r = l
        while r < len(s) and s[r] == s[l]:
            r += 1
        count += (r - l) // 3
        l = r
    return count

s = "10011100"
print(solve(s))

ইনপুট

"10011100"

আউটপুট

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

  2. অ্যারে-এ ইনভারশন কাউন্ট করার পাইথন প্রোগ্রাম

  3. পাইথনে নির্দিষ্ট বিট পরিসরের অনসেট বিট গণনা করার প্রোগ্রাম

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