ডিজিট রুট
একটি পজেটিভ ইন্টিজারের ডিজিট রুট = এর সব ডিজিটের সমষ্টি।
সর্টিং নিয়ম: a, b এর জন্য → digitRoot(a) ≤ digitRoot(b)। সমান হলে ছোট নম্বর আগে।
উদাহরণ: 4 এবং 13 → ডিজিট রুট ৪। 4 < 13, তাই 4 আগে।
ইনপুট: [13, 20, 7, 4] → আউটপুট: [20, 4, 13, 7] (ডিজিট রুট: 2, 4, 4, 7)
সমাধান
const arr = [13, 20, 7, 4];
const digitSum = (num, sum = 0) => {
if (num) {
return digitSum(Math.floor(num / 10), sum + (num % 10));
}
return sum;
};
const digitalSort = (arr = []) => {
const sorter = (a, b) => {
return (digitSum(a) - digitSum(b)) || (a - b);
};
arr.sort(sorter);
};
digitalSort(arr);
console.log(arr);
আউটপুট
[ 20, 4, 13, 7 ]
ব্যাখ্যা
digitSum: রিকার্সিভ ফাংশন দিয়ে ডিজিট সমষ্টি বের করা।sorter: প্রথমে ডিজিট রুট পার্থক্য, তারপর নম্বরের নিজস্ব পার্থক্য।||অপারেটর: প্রথম এক্সপ্রেশন ০ (সমান) হলে দ্বিতীয়টি ইভ্যালুয়েট হয়।