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

【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) => {
    const isPalindrome = (num = 1) => {
        const reverse = +String(num)
        .split('')
        .reverse()
        .join('');
        return reverse === num;
    };
    let count = 0;
    let i = 0;
    while(count < num){
        if(isPalindrome(i)){
            count++;
        };
        i++;
    };
    return i - 1;
};
console.log(findNthPalindrome(num));

コードの仕組み

このコードは大きく分けて2つの部分で構成されています。

  • isPalindrome 関数: 数値を文字列に変換し、split()reverse()join() を組み合わせて桁を反転させた後、単項プラス演算子(+)で数値に戻して元の値と比較することで、回文かどうかを判定します。
  • findNthPalindrome 関数: 0から順に数値を調べていき、回文が見つかるたびにカウンタを1ずつ増やします。目的の n 個目の回文に到達した時点で、その数値を返します。

出力結果

コンソールには次のように出力されます。

212

この結果は、0から数えて31番目の回文数が「212」であることを示しています。

  1. JavaScriptでパスカルの三角形のn行目の要素を求める方法

    パスカルの三角形とは パスカルの三角形は、前の行の隣接する要素同士を足し合わせていくことで構成される、三角形状の数列配置です。各行の両端は必ず1となり、内側の各要素はそのすぐ上にある2つの要素の和になります。 パスカルの三角形の最初のいくつかの要素は以下の通りです。 求めるもの 今回は、正の整数 num を唯一の引数として受け取り、パスカルの三角形の num 行目に存在するすべての要素を配列として返すJavaScript関数を作成します。 たとえば、入力が次の場合: const num = 9; 期待される出力は以下のようになります。 const output = [1, 9, 36, 8

  2. JavaScriptでリュカ数列のn番目の要素を求める方法

    リュカ数(Lucas Numbers)とはリュカ数は、以下のように定義される数列のことです。フィボナッチ数列と似た構造を持ちますが、初期値が異なる点が特徴です。L(0) = 2L(1) = 1L(n) = L(n-1) + L(n-2)つまり、3番目以降の項は「直前の2つの項の和」として計算されます。実際に並べると 2, 1, 3, 4, 7, 11, 18, 29, ... のような数列になります。問題数値 n を引数として受け取り、n番目のリュカ数を返すJavaScript関数を作成する必要があります。解決策:再帰による実装定義通りに再帰処理を使うことで、シンプルに実装できます。以下がその