รากดิจิตอลของจำนวนเต็มบวกบางจำนวน ถูกนิยามว่าเป็นผลรวมของหลักทั้งหมด เราได้รับอาร์เรย์ของจำนวนเต็ม ต้องจัดเรียงให้ a อยู่หน้า b ถ้ารากดิจิตอลของ a น้อยกว่าหรือเท่ากับรากดิจิตอลของ b หากสองตัวเลขมีรากดิจิตอลเท่ากัน ตัวเลขที่น้อยกว่า (ในความหมายทั่วไป) จะอยู่ก่อน เช่น 4 และ 13 มีรากดิจิตอลเท่ากัน แต่ 4 < 13 ดังนั้น 4 จะอยู่ก่อน 13 ในการจัดเรียงรากดิจิตอลที่มีทั้งคู่
ตัวอย่าง
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 ]