0

数字の配列([1,2,3,4,5,6,7,8,9,10])があります。これらの数字はプレーヤーを表しています。私は、これらのプレーヤーがお互いに1回だけ「プレイ」することを望んでいます。

これらのゲームの「ラウンド」を作成する必要があります。これらのラウンドには偶数の試合が含まれ、各プレーヤーはラウンドで最大1回しかプレイできません。試合数が奇数の場合は、試合数が不規則な最終ラウンドよりも問題ありません。

最終的には、「ラウンド」配列の配列になります。これらのラウンド配列には、プレーヤー間の一致が含まれます。最終結果は次のようになりますが、完全です。

[[[1,2],[3,4],[5,6],[7,8],[9,10]],[[1,3],[2,4],[5,7],[6,8],[9,1],[10,2]]]

マッチを作成するために見つけましArray#combinationたが、ラウンドを適切に構築することができないようです。

4

1 に答える 1

2

それはラウンドロビントーナメントと呼ばれます。ウィキペディアは次のアルゴリズムを提供します

Round 1. (1 plays 14, 2 plays 13, ... )
 1  2  3  4  5  6  7
 14 13 12 11 10 9  8

次に、1人の競技者(この例では1番)を修正し、他の競技者を時計回りに1つの位置に回転させます。

Round 2. (1 plays 13, 14 plays 12, ... )
 1  14 2  3  4  5  6
 13 12 11 10 9  8  7

そして回転し続けます:

Round 3. (1 plays 12, 13 plays 11, ... )
 1  13 14 2  3  4  5
 12 11 10 9  8  7  6

奇数のプレーヤーは、ゲームを持たないラウンドごとに1人のプレーヤーによって処理されます(多くの場合、ダミープレーヤーを追加することによって実装されます)。

于 2013-03-05T19:34:53.237 に答える