সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি ধনাত্মক পূর্ণসংখ্যার অ্যারে arr প্রথম ও একমাত্র আর্গুমেন্ট হিসেবে নেবে।
ফাংশনটি ইনপুট অ্যারেটিকে এমনভাবে সর্ট করবে যাতে যেই সংখ্যার অঙ্কের যোগফল সর্বোচ্চ সেটি সবার আগে আসবে, তারপর কম যোগফল वाले সংখ্যাগুলো।
উদাহরণস্বরূপ, যদি ইনপুট হয় –
ইনপুট
const arr = [5, 34, 1, 13, 76, 8, 78, 101, 57, 565];
আউটপুট
const output = [565, 78, 76, 57, 8, 34, 5, 13, 101, 1];
আউটপুট ব্যাখ্যা
কারণ 565-এর অঙ্কের যোগফল ১৬ যা সর্বোচ্চ, তারপর 78 এবং 76, এবং 101 ও ১-এর যোগফল যথাক্রমে ২ ও ১ যা ন্যূনতম।
উদাহরণ
নিচে কোডটি দেওয়া হল –
const arr = [5, 34, 1, 13, 76, 8, 78, 101, 57, 565];
const addDigits = (num, sum = 0) => {
if (num) {
return addDigits(Math.floor(num / 10), sum + (num % 10));
}
return sum;
};
const sortByDigitSum = (arr = []) => {
arr.sort((a, b) => {
return addDigits(b) - addDigits(a);
});
return arr;
};
sortByDigitSum(arr);
console.log(arr);
আউটপুট
[565, 78, 76, 57, 8, 34, 5, 13, 101, 1]