【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」であることを示しています。
-
JavaScriptでパスカルの三角形のn行目の要素を求める方法
パスカルの三角形とは パスカルの三角形は、前の行の隣接する要素同士を足し合わせていくことで構成される、三角形状の数列配置です。各行の両端は必ず1となり、内側の各要素はそのすぐ上にある2つの要素の和になります。 パスカルの三角形の最初のいくつかの要素は以下の通りです。 求めるもの 今回は、正の整数 num を唯一の引数として受け取り、パスカルの三角形の num 行目に存在するすべての要素を配列として返すJavaScript関数を作成します。 たとえば、入力が次の場合: const num = 9; 期待される出力は以下のようになります。 const output = [1, 9, 36, 8
-
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関数を作成する必要があります。解決策:再帰による実装定義通りに再帰処理を使うことで、シンプルに実装できます。以下がその