รากดิจิต (Digit Root)
รากดิจิตของจำนวนเต็มบวก ถูกนิยามว่าเป็นผลรวมของหลักตัวเลขทั้งหมดของมัน
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็ม ฟังก์ชันควรจัดเรียงมันอย่างที่ถ้า a อยู่ก่อน b แล้ว รากดิจิตของ a จะน้อยกว่าหรือเท่ากับรากดิจิตของ b ถ้าตัวเลขสองตัวมีรากดิจิตเท่ากัน ตัวที่เล็กกว่า (ในความหมายปกติ) ควรมาก่อน
เช่น 4 และ 13 มีรากดิจิตเท่ากัน แต่ 4 < 13 ดังนั้น 4 จะมาก่อน 13 ในการจัดเรียงแบบรากดิจิตที่ทั้งคู่มีอยู่
เช่น ถ้าอาร์เรย์อินพุตคือ:
const arr = [13, 20, 7, 4];
ผลลัพธ์ควรเป็น:
const output = [20, 4, 13, 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 ]