みさご解体新書

重複しない2つのインデックスを順番に取り出す

書き方例 1

const n = 10;

for (let i = 0; i < n; i++) {
  for (let j = i + 1; j < n; j++) {
    console.log(i, j);
  }
}

i < j が常に成り立つ。

ループ回数は、初項が 1 、末項が n - 1 の等差数列の和で、 n(n1)2\frac{n (n - 1)}{2} 回。

書き方例 2

const n = 10;

for (let i = 0; i < n; i++) {
  for (let j = 0; j < n; j++) {
    if (i >= j) continue;
    console.log(i, j);
  }
}

continue で弾いたあとは、 i < j が常に成り立つ。

ループ回数は、 n2n^2 回。

書き方例 3

for (const a of v) {
  for (const b of v) {
    if (a === b) continue;
    console.log(a, b);
  }
}

要素を直接取り出して、 a と b が同じならcontinue で弾く例。

ただし、 (a, b) のあとに (b, a) がでてくるような順列形式となる。

ループ回数は、 n が v のサイズだとすると n2n^2 回。