কম্পিউটার

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


ধরুন আমাদের একটি বাইনারি স্ট্রিং s আছে, এখন আসুন আমরা একটি অপারেশন বিবেচনা করি যেখানে আমরা একটি বিট নির্বাচন করি এবং এর মান 0 থেকে 1 বা এর বিপরীতে ফ্লিপ করি। তিনটি অভিন্ন পরপর বিট ছাড়া একটি স্ট্রিং পেতে আমাদের ন্যূনতম সংখ্যক অপারেশনের প্রয়োজন খুঁজে বের করতে হবে৷

সুতরাং, যদি ইনপুটটি s ="10011100" এর মত হয়, তাহলে আউটপুট হবে 1, কারণ আমরা ইনডেক্স 4-এ 1 থেকে 0 বিট ফ্লিপ করতে পারি যাতে "10010100" স্ট্রিং তৈরি করা যায়, এখানে কোনো পরপর তিনটি অভিন্ন বিট নেই।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • l :=0, গণনা :=0
  • যখন l
  • r :=l
  • যদিও r
  • r :=r + 1
  • গণনা :=গণনা + ((r - l) / 3) এর তল
  • l :=r
  • রিটার্ন গণনা
  • উদাহরণ

    আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    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. পাইথন প্রোগ্রাম পরপর 1’ ছাড়া বাইনারি স্ট্রিং সংখ্যা গণনা করতে

    2. পাইথন প্রোগ্রাম একটি অ্যারের মধ্যে বিপরীত গণনা

    3. একটি পরিসরে আনসেট বিট গণনা করার জন্য পাইথন প্রোগ্রাম।

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