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

পাইথনে বাইনারি রিপ্রেজেন্টেশনে ১-এর কাউন্ট অনুযায়ী নম্বর সর্ট করা

একটি নম্বর লিস্ট nums দেওয়া আছে। বাইনারি রিপ্রেজেন্টেশনে ১-এর সংখ্যা (পপকাউন্ট) অনুযায়ী অ্যাসেন্ডিং সর্ট করুন। টাই হলে নম্বরের মান অনুযায়ী সর্ট করুন।

ইনপুট উদাহরণ

nums = [4, 1, 12, 7, 6]

আউটপুট: [1, 4, 6, 12, 7]

বাইনারি রিপ্রেজেন্টেশন

  • 4 = 0100 (১টি ১)
  • 1 = 0001 (১টি ১)
  • 6 = 0110 (২টি ১)
  • 12 = 1100 (২টি ১)
  • 7 = 0111 (৩টি ১)

পাইথন কোড

def solve(nums):
    nums.sort(key=lambda num: (bin(num).count("1"), num))
    return nums

# টেস্ট
print(solve([4, 1, 12, 7, 6]))  # [1, 4, 6, 12, 7]

ব্যাখ্যা

bin(num).count("1") দিয়ে পপকাউন্ট বের করা হয়। sort(key=...) দিয়ে টাপল (popcount, value) অনুযায়ী সর্ট হয়। সময় জটিলতা O(n log n * log max)।

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

  2. বাইনারি ইনসারশন সর্টের পাইথন প্রোগ্রাম

  3. পাইথনে দুটি সংখ্যার বাইনারি রিপ্রেজেন্টেশন অনুগ্রাম (anagram) কিনা যাচাই করা

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