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

JavaScriptで桁の和が回文数かどうかを判定する関数を作る方法

問題概要

今回は、数値 num を第1引数(唯一の引数)として受け取る JavaScript 関数を作成します。

この関数は、num の各桁の数字を合計した値が回文数(palindrome number)である場合に true を返し、そうでない場合は false を返す必要があります。

例えば、関数への入力が次のようだったとします。

const num = 781296;

このとき、期待される出力は以下の通りです。

const output = true;

出力の解説

781296 の各桁の和を計算すると、7 + 8 + 1 + 2 + 9 + 6 = 33 となります。

33 は左右から読んでも同じ値になる回文数であるため、結果は true になります。

コード例

以下が実際のコードです。

const num = 781296;

// 各桁の数字を再帰的に足し合わせて合計を求める関数
const findSum = (num, sum = 0) => {
  if (num) {
    return findSum(Math.floor(num / 10), sum + (num % 10));
  }
  return sum;
};

// 桁の和が回文数かどうかを判定する関数
const palindromeDigitSum = (num = 1) => {
  const sum = findSum(num);
  const str = String(sum);
  const arr = str.split('');
  const reversed = arr.reverse();
  const revNum = +arr.join('');

  return revNum === sum;
};

console.log(palindromeDigitSum(num));

コードのポイント

  • findSum 関数:再帰呼び出しを使い、「10 で割った余り」で一の位を取り出しながら合計を積み上げます。num が 0 になった時点で合計値を返します。
  • palindromeDigitSum 関数:桁の和を文字列に変換し、split('') で配列化したうえで reverse()join('') を使って逆順の数値を生成します。
  • 元の合計値と逆順の数値が一致すれば、それは回文数であると判断できます。

実行結果

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

true

781296 の桁の和である 33 が回文数のため、正しく true が返されていることが確認できます。この手法は、任意の整数に対して汎用的に使えるシンプルな実装です。

  1. JavaScriptで数値配列内の母音(ASCIIコード)を判定して置換する方法

    問題 ここで求められているのは、数値の配列を受け取るJavaScript関数を作成することです。配列の中に、ASCIIコードとして母音(a・e・i・o・u)に該当する数値が存在する場合、その数値を対応する母音の文字に置き換え、変換後の新しい配列を返す必要があります。 考え方 ASCIIコードでは、小文字の母音はそれぞれ「a」= 97、「e」= 101、「i」= 105、「o」= 111、「u」= 117 に対応しています。そこで、String.fromCharCode() を使って各数値を文字に変換し、その文字が母音かどうかを判定すればよいわけです。母音に一致した要素だけを文字へ置き換えます

  2. JavaScriptで数値に序数接尾辞(st・nd・rd・th)を追加する方法

    問題JavaScriptで関数を作成する必要があります。この関数は、数値 num を最初の(唯一の)引数として受け取ります。関数の役割は、英語の序数表記のルールに従って、数値に「st」「nd」「rd」「th」という接尾辞を追加することです。具体的なルールは以下の通りです。一の位が1で終わる数値には「st」を使用します(例:1st、発音はfirst)一の位が2で終わる数値には「nd」を使用します(例:92nd、発音はninety-second)一の位が3で終わる数値には「rd」を使用します(例:33rd、発音はthirty-third)上記ルールの例外として、下二桁が11・12・13となる数値に