JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

【JavaScript】数値の各桁の合計が回文数かどうかを判定する方法

本記事では、数値を受け取り、その各桁の合計を計算したうえで、その合計が回文数(パリンドローム)であるかどうかを判定するJavaScript関数の実装方法を解説します。合計が回文数であれば関数は true を、そうでなければ false を返します。

たとえば、入力が 697 の場合を考えてみましょう。各桁の合計は 6 + 9 + 7 = 22 となり、22 は左右どちらから読んでも同じ数値なので回文数です。

したがって、この関数は 697 に対して 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 revered = +String(num)
    .split("")
    .reverse()
    .join("");
    return revered === num;
};
const isSumPalindrome = num => isPalindrome(sumDigit(num));
console.log(isSumPalindrome(num));

処理の流れの解説

このコードのポイントを順番に見ていきましょう。

1. sumDigit関数で桁の合計を計算

再帰呼び出しを利用しています。num % 10 で最下位の桁を取り出し、Math.floor(num / 10) で桁を一つずらしながら合計を蓄積していきます。num が 0 になった時点で合計値を返します。

2. isPalindrome関数で回文判定

数値を文字列に変換し、split("") で1文字ずつ配列に分解、reverse() で反転、join("") で再び文字列に結合しています。反転後の数値と元の数値が一致すれば、それは回文数です。

3. isSumPalindrome関数で組み合わせ

sumDigit で求めた桁の合計を isPalindrome に渡すことで、目的の判定を実現しています。

出力

コンソールには以下の出力が表示されます。

true

697 の桁の合計である 22 が回文数であるため、正しく true が返されていることがわかります。

  1. JavaScriptで数値が三角数かどうかを判定する方法

    三角数(Triangular Number)とは? 三角数とは、点を正三角形の形に敷き詰めたときに現れる数のことです。n番目の三角数は「1からnまでの自然数の合計」として表され、次の公式で求められます。 Tn = n(n+1) / 2 具体的な三角数は 1, 3, 6, 10, 15, 21, 28 … と続きます。例えば 10 は、各辺に4個の点を配置した正三角形を構成できるため、三角数です。 問題 数値を引数として受け取り、その数値が三角数であれば true を、そうでなければ false を返すJavaScript関数を実装します。 判定の考え方 n(n+1)/2 = num となる正

  2. Pythonで数値が8進数表記の回文かどうかを判定する方法

    ある数値が与えられたとき、それが8進数として表現されているのか、それとも10進数なのかを判別し、8進数表記において回文(前から読んでも後ろから読んでも同じ並び)になっているかどうかを判定する問題を考えてみましょう。 具体的には、次のようなルールで処理を行います。 数値のいずれかの桁に「8」や「9」が含まれている場合 → その数値は10進数と判断し、8進数に変換してから回文判定を行う すべての桁が「0〜7」の範囲に収まっている場合 → その数値は8進数としてそのまま扱い、各桁を取り出して回文判定を行う たとえば、入力が num = 178 の場合を考えてみます。「8」という数字は8進数では使