কম্পিউটার

পাইথনে তাদের বাইনারি উপস্থাপনায় 1 গণনার উপর ভিত্তি করে সংখ্যা সাজানোর প্রোগ্রাম


ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে। আমাদের প্রতিটি সংখ্যার জন্য বাইনারি উপস্থাপনায় উপস্থিত 1s সংখ্যা দ্বারা ক্রমবর্ধমান ক্রমে তালিকাটি সাজাতে হবে। যদি দুটি সংখ্যার একই সংখ্যা 1s হয়, তাহলে তাদের মানের উপর ভিত্তি করে সাজান।

সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[4, 1, 12, 7, 6], তাহলে আউটপুট হবে [1, 4, 6, 12, 7], কারণ −

  • 4 এর বাইনারি ফর্ম হল 0100
  • 1 এর বাইনারি ফর্ম হল 0001
  • 6 এর বাইনারি ফর্ম হল 0110
  • 12 এর বাইনারি ফর্ম হল 1100
  • 7 এর বাইনারি ফর্ম হল 0111

সুতরাং বিন্যাস হল [1, 4, 6, 12, 7], 1 প্রথমে আসে কারণ এর মান ছোট, সেইসাথে এই একই কারণে 6 প্রথমে আসে।

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

  • একটি ফাংশন তুলনা সংজ্ঞায়িত করুন, এটি একটি সংখ্যা নেয়
  • এটি একটি জোড়া p প্রদান করে (n এর বাইনারি আকারে 1 গণনা, n এর মান)
  • প্রতিটি মানকে তুলনা করার আগে তুলনা ফাংশনে পাস করে সংখ্যা সাজান
  • রিটার্ন সংখ্যা।

উদাহরণ

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

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

nums = [4, 1, 12, 7, 6]
print(solve(nums))

ইনপুট

[4, 1, 12, 7, 6]

আউটপুট

[1, 4, 6, 12, 7]

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

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

  3. দুটি সংখ্যার বাইনারি উপস্থাপনা অ্যানাগ্রাম কিনা তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম।

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