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

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 とすることで、呼び出し時に引数が省略された場合でもエラーにならず、安全に動作します。

  1. Firebugを使ったJavaScriptデバッグ徹底ガイド|基本機能から実践手順まで

    デバッグとは何か デバッグとは、ソフトウェアから欠陥(バグ)を体系的に取り除くプロセスのことです。作業はテストケースの実行から始まります。テストケースを実行すると、実際の結果と期待される結果が比較され、両者に不一致があれば根本原因の分析が行われます。さらに、リグレッションテストなどの追加テストを実施することで、結果が期待どおりのラインに沿っていることを確認します。 静的なWebページの作成にはHTMLが広く使われています。一方、動的なWebアプリケーションを開発するには、Webのスクリプト言語であるJavaScriptが欠かせません。コードをバグのない状態に保つため、プログラマーはさまざまなデ

  2. JavaScriptのimportで波括弧「{}」を使う理由とは?名前付きエクスポートの基本をわかりやすく解説

    JavaScript(ESモジュール)でモジュールを読み込む際、import 文に波括弧 { } を付けるかどうか迷ったことはありませんか?実はこの波括弧は、名前付きエクスポート(named export)を読み込むために必要な記法です。本記事では、実際のコード例を使いながら、{ } の役割と使い方を詳しく解説します。 importで { } を使う場面とは JavaScriptのESモジュールでは、エクスポート方法によって読み込み側の書き方が変わります。 名前付きエクスポート:export { 関数名 } のようにエクスポートされたものを読み込む場合は、import { 名前 } fro