หาผลรวมหลักของตัวเลข แล้วตรวจสอบว่าผลรวมนั้นเป็นพาลินโดรม (อ่านตรง-ย้อนเหมือนกัน) หรือไม่
ตัวอย่าง
697 → 6+9+7 = 22 → 22 เป็นพาลินโดรม → true
ตัวอย่างโค้ด
const num = 697;
const sumDigit = (num, sum = 0) => {
if (num) return sumDigit(Math.floor(num / 10), sum + (num % 10));
return sum;
};
const isPalindrome = num => {
const reversed = +String(num).split('').reverse().join('');
return reversed === num;
};
const isSumPalindrome = num => isPalindrome(sumDigit(num));
console.log(isSumPalindrome(num));
ผลลัพธ์
true
วิธีแบบ Iterative (ไม่ใช้ Recursion)
const sumDigit = num =>
String(num).split('').reduce((a, b) => a + +b, 0);
const isPalindrome = num =>
String(num) === String(num).split('').reverse().join('');
หลีกเลี่ยง Stack Overflow สำหรับตัวเลขที่มีหลักมาก