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