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

JavaScriptで数値を回文にするまでのステップ数を求める方法


問題

数値 num を第一かつ唯一の引数として受け取るJavaScript関数を作成します。

この関数は、与えられた数値を回文(左から読んでも右から読んでも同じ並びになる数)にするために必要な「特別なステップ」の回数を返します。

ここでいう特別なステップとは、「桁を逆順に並べ替えて、元の数値に加算する」という操作のことです。加算した結果がまだ回文になっていない場合は、その合計値に対して同じ操作を、回文が得られるまで繰り返します。

例えば、関数への入力が次の場合を考えてみましょう。

入力

const num = 87;

出力

const output = 4;

出力の解説

答えが4になるのは、以下のステップを経るためです。

87 + 78 = 165; 165 + 561 = 726; 726 + 627 = 1353; 1353 + 3531 = 4884

最終的に得られた 4884 は回文であるため、必要なステップ数は4回となります。

コード例

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

const num = 87;
const countSteps = (num) => {
    let res = 0;
    while (!isPalindrome(num)) {
    res++
    num += +('' + num).split``.reverse().join``
};
    return res;
}
const isPalindrome = num => {
    let i = 0
    let str = '' + num
    while (i++ <= str.length / 2) {
        if (str[i] !== str[str.length - 1 - i]) return false
    };
    return true
}
console.log(countSteps(num));

出力

4

コードの解説

このコードの動作を簡単に整理すると、次のようになっています。

  • countSteps関数: 回文判定用の isPalindrome を使って、数値が回文になるまで「桁を反転して加算する」処理をループで繰り返し、その実行回数をカウントして返します。
  • isPalindrome関数: 数値を文字列に変換し、先頭と末尾から順番に文字を比較することで、その数値が回文かどうかを判定します。
  • 桁の反転処理: ('' + num).split``.reverse().join`` の部分では、数値を文字列化して1文字ずつ配列に分解し、反転させてから再び連結することで「桁を逆順にした数値」を作成しています。先頭の + 演算子により、結果を数値型へ戻しています。
  1. 【JavaScript】整数の中からn番目の回文数を見つける方法

    問題 数値 n を引数として受け取り、0から数えて n 番目にあたる回文数(回文となる整数)を返す JavaScript 関数を作成します。 たとえば、1番目の回文数は「0」、2番目は「1」、10番目は「9」です。「10」は逆から読むと「01」となり回文ではないため、11番目の回文数は「11」となります。 回文数とは 回文数とは、桁を逆から並べ替えても元の数と同じになる整数のことです。「7」「121」「1331」などがその例です。 解決策:コード例 以下が実際のコードです。 const num = 31; const findNthPalindrome = (num = 1) => {

  2. JavaScriptで0からnまで数えるときに「9」が出現する回数を数える方法

    問題 数値 n を引数として受け取るJavaScript関数を作成します。この関数は、0からnまで順番に数えていく過程で、数字の「9」が何回登場するかを数え、その合計回数を返す必要があります。 解決のアプローチ この問題は、次の手順でシンプルに解決できます。 0からnまでの各数値を文字列に変換する 変換した文字列の中に「9」が何文字含まれているかを調べる すべての数値分のカウントを合計して返す 文字列内の特定の文字を数えるには、split() で1文字ずつ分解し、reduce() を使って一致する文字をカウントする方法が有効です。 コード例 以下が実際のコードです。 const num