আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি পূর্ণসংখ্যার অ্যারে একমাত্র আর্গুমেন্ট হিসেবে গ্রহণ করবে।
ফাংশনটি অ্যারেতে থাকা পূর্ণসংখ্যাগুলো তাদের বাইনারি রিপ্রেজেন্টেশনে থাকা ১ বিটের সংখ্যা অনুযায়ী বর্ধমান ক্রমে সর্ট করবে। যদি দুটি বা অধিক সংখ্যার ১ বিটের সংখ্যা সমান হয়, তবে তাদের মান অনুযায়ী বর্ধমান ক্রমে সর্ট করবে।
উদাহরণস্বরূপ —
ইনপুট অ্যারে যদি হয় —
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 ]