JavaScriptコードに数学の問題があります。与えられた数のプレーヤーをランダムに2つのチームに分割して、毎回(プレーヤーが再びプレイしたい場合)チームが再び形成され、すべての組み合わせが形成されるまでチームが異なるようにする必要があります。
私には4人のプレーヤーがいるとしましょう。したがって、すべての組み合わせは次のようになります。
[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]
ただし、チーム側はカウントされないため、3つの異なる組み合わせしかありません。
[1,2] vs [3,4]
[1,3] vs [2,4]
[1,4] vs [2,3]
プレイしたゲームの数が組み合わせの数を超えると、最初からやり直す必要があります...つまり、3つの組み合わせのいずれかをランダムに選択し、次の組み合わせをランダムに選択します...
しかし、ひねりがあります...そして、プレーヤーの数が奇数で、プレーヤーの1人が1つのゲームを休まなければならないとき、私の数学のスキルはかなり南に行きます。したがって、5人のプレーヤーの場合、すべての対戦の組み合わせは次のようになります(最後の数字は休んでいるプレーヤーです)。
[1,2] vs [3,4] [5]
[1,2] vs [3,5] [4]
[1,2] vs [4,5] [3]
[1,3] vs [2,4] [5]
[1,3] vs [2,5] [4]
[1,3] vs [4,5] [2]
[1,4] vs [2,3] [5]
[1,4] vs [2,5] [3]
[1,4] vs [3,5] [2]
[1,5] vs [2,3] [4]
[1,5] vs [2,4] [3]
[1,5] vs [3,4] [2]
[2,3] vs [4,5] [1]
[2,4] vs [3,5] [1]
[2,5] vs [3,4] [1]
JavaScriptでこれらのチームを形成するにはどうすればよいですか?
頭に浮かんだことの1つは、各プレーヤーに一意の値(10 ^ x)を与えることでした。例:
player1.value = 10;
player2.value = 100;
player3.value = 1000;
player4.value = 10000;
...そして、ループしてチームを形成するときに、チームの合計値が最後の値と等しいかどうかを確認します。
数学的に/JavaScript的にもっと才能のある人がこのコーディングの問題を手伝ってくれませんか。ありがとう!