একটি সংখ্যার অঙ্কগুলোর যোগফল বের করে সেটি প্যালিনড্রোম কিনা চেক করা।
উদাহরণ
697 → 6+9+7 = 22 → প্যালিনড্রোম ✓ (true) 123 → 1+2+3 = 6 → প্যালিনড্রোম ✓ (true, এক-অঙ্ক সবসময় প্যালিনড্রোম) 124 → 1+2+4 = 7 → প্যালিনড্রোম ✓ 199 → 1+9+9 = 19 → প্যালিনড্রোম ✗ (false)
সমাধান
// ডিজিট যোগফল (রিকার্সিভ)
const sumDigits = (num, sum = 0) => {
if (num === 0) return sum;
return sumDigits(Math.floor(num / 10), sum + (num % 10));
};
// প্যালিনড্রোম চেক
const isPalindrome = (num) => {
const str = String(num);
return str === str.split('').reverse().join('');
};
// কম্বাইনড
const isSumPalindrome = (num) => isPalindrome(sumDigits(Math.abs(num)));
// টেস্ট
console.log(isSumPalindrome(697)); // true (22)
console.log(isSumPalindrome(123)); // true (6)
console.log(isSumPalindrome(199)); // false (19)
console.log(isSumPalindrome(9999)); // false (36)
ইটেরেটিভ ভার্সন (বेहतर পারফরম্যান্স)
const isSumPalindromeIterative = (num) => {
num = Math.abs(num);
let sum = 0;
while (num > 0) {
sum += num % 10;
num = Math.floor(num / 10);
}
const str = String(sum);
for (let i = 0; i < str.length / 2; i++) {
if (str[i] !== str[str.length - 1 - i]) return false;
}
return true;
};
উৎপাদন
true