JavaScriptで指定した範囲内の整数ペアを生成する方法
問題
数値 n を引数として受け取る JavaScript 関数を作成します。この関数は、以下の条件を満たす整数のペア [a, b] をすべて含む配列を返す必要があります。
0 <= a <= b <= n
つまり、a と b はどちらも 0 以上 n 以下であり、かつ a は b 以下である必要があります。例えば n = 4 の場合、(0, 0) から (4, 4) までの15通りの組み合わせが生成されます。
実装コード
二重ループを使うことで、条件を満たすすべてのペアを効率よく列挙できます。外側のループ変数 i を a、内側のループ変数 j を b とし、j を i から開始することで「a <= b」の条件を自動的に満たすことができます。
const num = 4;
const findPairs = (n = 1) => {
const arr = [];
for(let i = 0; i <= n; i++){
for(let j = i; j <= n; j++){
let temp = [];
temp.push(i, j);
arr.push(temp);
};
};
return arr;
};
console.log(findPairs(num));出力結果
[ [ 0, 0 ], [ 0, 1 ], [ 0, 2 ], [ 0, 3 ], [ 0, 4 ], [ 1, 1 ], [ 1, 2 ], [ 1, 3 ], [ 1, 4 ], [ 2, 2 ], [ 2, 3 ], [ 2, 4 ], [ 3, 3 ], [ 3, 4 ], [ 4, 4 ] ]
コードの解説
この実装のポイントは以下の通りです。
1. 内側のループを i から開始する: j の初期値を 0 ではなく i にすることで、a > b となる無駄な組み合わせ(例: [3, 1])が最初から生成されなくなります。これにより、重複チェックやフィルタリング処理が不要になります。
2. 計算量について: 生成されるペアの総数は (n + 1)(n + 2) / 2 個となります。n = 4 の場合は 5 × 6 / 2 = 15 個であり、出力結果と一致しています。時間計算量は O(n²)、空間計算量も同様に O(n²) です。
3. デフォルト引数: 引数 n = 1 とすることで、呼び出し時に引数が省略された場合でもエラーにならず、安全に動作します。
-
Firebugを使ったJavaScriptデバッグ徹底ガイド|基本機能から実践手順まで
デバッグとは何か デバッグとは、ソフトウェアから欠陥(バグ)を体系的に取り除くプロセスのことです。作業はテストケースの実行から始まります。テストケースを実行すると、実際の結果と期待される結果が比較され、両者に不一致があれば根本原因の分析が行われます。さらに、リグレッションテストなどの追加テストを実施することで、結果が期待どおりのラインに沿っていることを確認します。 静的なWebページの作成にはHTMLが広く使われています。一方、動的なWebアプリケーションを開発するには、Webのスクリプト言語であるJavaScriptが欠かせません。コードをバグのない状態に保つため、プログラマーはさまざまなデ
-
JavaScriptのimportで波括弧「{}」を使う理由とは?名前付きエクスポートの基本をわかりやすく解説
JavaScript(ESモジュール)でモジュールを読み込む際、import 文に波括弧 { } を付けるかどうか迷ったことはありませんか?実はこの波括弧は、名前付きエクスポート(named export)を読み込むために必要な記法です。本記事では、実際のコード例を使いながら、{ } の役割と使い方を詳しく解説します。 importで { } を使う場面とは JavaScriptのESモジュールでは、エクスポート方法によって読み込み側の書き方が変わります。 名前付きエクスポート:export { 関数名 } のようにエクスポートされたものを読み込む場合は、import { 名前 } fro