हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो पूर्णांकों की एक सरणी को एकमात्र तर्क के रूप में लेता है।
फ़ंक्शन को सरणी में मौजूद पूर्णांकों को उनके द्विआधारी प्रतिनिधित्व में मौजूद 1s के आधार पर बढ़ते क्रम में क्रमबद्ध करना चाहिए। यदि दो या दो से अधिक संख्याओं की बाइनरी में समान संख्या 1s है, तो उन्हें उनके परिमाण के अनुसार बढ़ते क्रम में क्रमबद्ध किया जाना चाहिए।
उदाहरण के लिए -
यदि इनपुट ऐरे है -
const arr = [34, 37, 23, 89, 12, 31, 23, 89];
तब आउटपुट ऐरे होगा -
const output = [34, 12, 37, 23, 89, 23, 89, 31];
उदाहरण
निम्नलिखित कोड है -
const arr = [34, 37, 23, 89, 12, 31, 23, 89]; const sortByBinary = (arr = []) => { const calculateOne = (str = '') => { let res = 0; for(let i = 0; i < str.length; i++){ if(str[i] === '1'){ res++; }; }; return res; } const sorter = (a, b) => { const firstCount = calculateOne((a >>> 0).toString(2)); const secondCount = calculateOne((b >>> 0).toString(2)); return firstCount - secondCount; }; arr.sort(sorter); }; sortByBinary(arr); console.log(arr);
आउटपुट
कंसोल आउटपुट निम्नलिखित है -
[ 34, 12, 37, 23, 89, 23, 89, 31 ]