কিছু ধনাত্মক পূর্ণসংখ্যার অঙ্কের মূলকে তার সমস্ত অঙ্কের যোগফল হিসাবে সংজ্ঞায়িত করা হয়। আমাদের পূর্ণসংখ্যার একটি বিন্যাস দেওয়া হয়েছে। আমাদের এটিকে এমনভাবে সাজাতে হবে যাতে b এর আগে a আসে যদি a এর অঙ্কের মূলটি b এর অঙ্কের মূলের চেয়ে কম বা সমান হয়। দুটি সংখ্যার একই অঙ্কের মূল থাকলে, ছোটটি (নিয়মিত অর্থে) প্রথমে আসা উচিত। উদাহরণস্বরূপ, 4 এবং 13 এর একই ডিজিট রুট আছে, তবে 4 <13 এইভাবে যেকোন ডিজিটরুট সাজানোর ক্ষেত্রে 13 এর আগে 4 আসে যেখানে উভয়ই উপস্থিত থাকে।
উদাহরণের জন্য,
for a = [13, 20, 7, 4], the output should be [20, 4, 13, 7].
আসুন এই সমস্যার জন্য কোড লিখি -
আমরা এটিকে দুটি ফাংশনে ভাগ করব, একটি পুনরাবৃত্ত ফাংশন যা একটি সংখ্যার অঙ্কের যোগফল গণনা করে এবং তারপর একটি বাছাই ফাংশন যা সংখ্যার যোগফলের ভিত্তিতে উপাদানটিকে অর্ডার করে৷
এর জন্য কোড হবে −
উদাহরণ
const arr = [54, 23, 8, 89, 26]; const recursiveCount = (num, count = 0) => { if(num){ return recursiveCount(Math.floor(num/10), count+num%10); }; return count; }; const sorter = (a, b) => { const countDifference = recursiveCount(a) - recursiveCount(b); return countDifference || a - b; }; arr.sort(sorter); console.log(arr);
আউটপুট
কনসোলে আউটপুট হবে −
[ 23, 8, 26, 54, 89 ]