Gốc chữ số (Digit Root)
Gốc chữ số của số nguyên dương được định nghĩa là tổng tất cả các chữ số của nó.
Cần viết hàm JavaScript nhận mảng số nguyên. Hàm sắp xếp sao cho nếu a đứng trước b thì gốc chữ số của a nhỏ hơn hoặc bằng gốc chữ số của b. Nếu hai số có cùng gốc chữ số, số nhỏ hơn (theo nghĩa thông thường) đứng trước.
Ví dụ, 4 và 13 có cùng gốc chữ số, tuy nhiên 4 < 13 nên 4 đứng trước 13 trong bất kỳ sắp xếp digitRoot nào có cả hai.
Ví dụ - Nếu mảng đầu vào:
const arr = [13, 20, 7, 4];
Đầu ra sẽ là:
const output = [20, 4, 13, 7];
Ví dụ
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);
Kết quả
Điều này sẽ tạo ra đầu ra sau:
[ 20, 4, 13, 7 ]