मान लीजिए हमारे पास nums में संख्याओं की एक सूची है। हमें सूची को आरोही क्रम में प्रत्येक संख्या के बाइनरी प्रतिनिधित्व में मौजूद 1 की संख्या के आधार पर सॉर्ट करना है। यदि दो संख्याओं में 1 की संख्या समान है, तो उन्हें उनके मानों के आधार पर व्यवस्थित करें।
इसलिए, यदि इनपुट है nums = [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 इसी कारण से पहले आता है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- एक फ़ंक्शन
compareपरिभाषित करें, यह एक संख्याnलेता है - यह एक जोड़ी
pलौटाता है जिसमें(n के बाइनरी रूप में 1 की संख्या, n का मान)हो numsकोcompareफ़ंक्शन को प्रत्येक मान में पास करके तुलना से पहले सॉर्ट करेंnumsलौटाएं।
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
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]