কম্পিউটার

পাইথনে বিট গণনা করা হচ্ছে


ধরুন আমাদের একটি অ-ঋণাত্মক পূর্ণসংখ্যা সংখ্যা আছে৷ 0 ≤ i ≤ num রেঞ্জের প্রতিটি সংখ্যার জন্য আমাদের তাদের বাইনারি কাউন্টারপার্টে 1 এর সংখ্যা গণনা করতে হবে এবং তাদের একটি তালিকা হিসাবে ফেরত দিতে হবে। সুতরাং যদি সংখ্যাটি 5 হয়, তাহলে সংখ্যাগুলি হল [0, 1, 2, 3, 4, 5], এবং এই সংখ্যাগুলির মধ্যে 1s সংখ্যা হল [0, 1, 1, 2, 1, 2]

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

  • res :=একটি অ্যারে যা 0s এর num + 1 সংখ্যা ধারণ করে
  • অফসেট :=0
  • আমি 1 থেকে num + 1
      পরিসরে
    • যদি i এবং i – 1 =0, তারপর res[i] :=1 এবং অফসেট :=0
    • অন্যথায় 1 দ্বারা অফসেট বৃদ্ধি করুন এবং res[i] :=1 + res[অফসেট]
  • রিটার্ন রিটার্ন

উদাহরণ(পাইথন)

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

class Solution:
   def countBits(self, num):
      result = [0] * (num+1)
      offset = 0
      for i in range(1,num+1):
         if i & i-1 == 0:
            result[i] = 1
            offset = 0
         else:
            offset+=1
            result[i] = 1 + result[offset]
      return result
ob1 = Solution()
print(ob1.countBits(6))

ইনপুট

6

আউটপুট

[0, 1, 1, 2, 1, 2, 2]

  1. গণনা সাজানোর জন্য পাইথন প্রোগ্রাম

  2. issuperset() পাইথনে

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

  4. পাইথনে রাইট শিফট (>>) অপারেটর কি?