プエルトリコターンベース大会 対戦相手の組み合わせ方

対戦相手の組み合わせ方は、人数に応じて下のようにします。プレイヤーは0から始まる整数で表しています。

例えば

[[0, 1, 3], [0, 2, 4]]

のように書かれている場合、0 vs 1 vs 3 と 0 vs 2 vs 4 の2ゲームを行うことを示しています。

改行やスペースは関係ありません(見やすさと、生成したツールの都合です)。

大会ではダイスを用いて各数字に参加者を当てはめます。

人数によっては、タイブレークも考慮すると全ゲームで1位を取っても優勝できない可能性があります。

参加人数が多くゲーム数が非常に大きくなると思われる場合は複数のグループにわけることがあります(例えば16人から2グループにわける場合、16人は8人と8人、17人は8人と9人…となる)。この場合もプレーオフは設けず、全グループで得点とタイブレークを比較して順位を決定します。

5人

1人あたり3ゲーム

[[0, 1, 2], [3, 4, 0], [1, 2, 3], [4, 0, 1],
[2, 3, 4]]

6人

1人あたり4ゲーム

[[0, 1, 3], [0, 2, 4], [1, 4, 5], [2, 3, 5],
[1, 2, 4], [1, 3, 5], [2, 5, 0], [3, 4, 0]]

7人

3,4,6は5ゲーム
他は6ゲーム

[[0, 1, 3], [0, 2, 4], [0, 5, 6], [1, 2, 6], [1, 4, 5], [2, 3, 5], [3, 4, 6],
[1, 2, 4], [1, 3, 5], [1, 6, 0], [2, 3, 0], [2, 5, 6], [4, 5, 0]]

8人

1,4,7は5ゲーム
他は6ゲーム

[[0, 1, 5],
 [0, 2, 4],
 [0, 3, 6],
 [1, 2, 3],
 [1, 4, 7],
 [2, 6, 7],
 [3, 5, 7],
 [4, 5, 6],
 [1, 2, 6],
 [1, 3, 5],
 [2, 3, 4],
 [2, 5, 0],
 [3, 7, 0],
 [4, 6, 0],
 [5, 6, 7]]

9人

1人あたり4ゲーム

全員が各参加者とちょうど1回ずつ戦います。

[[0, 1, 5],
 [0, 2, 4],
 [0, 3, 6],
 [0, 7, 8],
 [1, 2, 3],
 [1, 4, 7],
 [1, 6, 8],
 [2, 5, 8],
 [2, 6, 7],
 [3, 4, 8],
 [3, 5, 7],
 [4, 5, 6]]

10人

8,9は4ゲーム
他は5ゲーム

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

11人

1は5ゲーム
他は4ゲーム

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

12人

1人あたり5ゲーム

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

13人

1人あたり6ゲーム

全員が各参加者とちょうど1回ずつ戦います。

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

14人

5, 8が7ゲーム
他は6ゲーム

[[0, 1, 8],
 [0, 2, 6],
 [0, 3, 9],
 [0, 4, 7],
 [0, 5, 10],
 [0, 12, 13],
 [1, 2, 9],
 [1, 3, 7],
 [1, 4, 5],
 [1, 6, 11],
 [1, 10, 12],
 [2, 3, 5],
 [2, 4, 8],
 [2, 7, 12],
 [2, 11, 13],
 [3, 4, 6],
 [3, 8, 13],
 [3, 10, 11],
 [4, 10, 13],
 [4, 11, 12],
 [5, 6, 13],
 [5, 7, 11],
 [5, 8, 14],
 [5, 9, 12],
 [6, 8, 12],
 [6, 9, 10],
 [7, 8, 10],
 [7, 9, 13],
 [8, 9, 11]]

15人

1人あたり7ゲーム

全員が各参加者とちょうど1回ずつ戦います。

[[0, 1, 8],
 [0, 2, 6],
 [0, 3, 9],
 [0, 4, 7],
 [0, 5, 10],
 [0, 11, 14],
 [0, 12, 13],
 [1, 2, 9],
 [1, 3, 7],
 [1, 4, 5],
 [1, 6, 11],
 [1, 10, 12],
 [1, 13, 14],
 [2, 3, 5],
 [2, 4, 8],
 [2, 7, 12],
 [2, 10, 14],
 [2, 11, 13],
 [3, 4, 6],
 [3, 8, 13],
 [3, 10, 11],
 [3, 12, 14],
 [4, 9, 14],
 [4, 10, 13],
 [4, 11, 12],
 [5, 6, 13],
 [5, 7, 11],
 [5, 8, 14],
 [5, 9, 12],
 [6, 7, 14],
 [6, 8, 12],
 [6, 9, 10],
 [7, 8, 10],
 [7, 9, 13],
 [8, 9, 11]]

16人

14,15は7ゲーム
他は8ゲーム

[[0, 1, 8],
 [0, 2, 6],
 [0, 3, 9],
 [0, 4, 7],
 [0, 5, 10],
 [0, 11, 14],
 [0, 12, 13],
 [1, 2, 9],
 [1, 3, 7],
 [1, 4, 5],
 [1, 6, 11],
 [1, 10, 12],
 [1, 13, 14],
 [2, 3, 5],
 [2, 4, 8],
 [2, 7, 12],
 [2, 10, 14],
 [2, 11, 13],
 [3, 4, 6],
 [3, 8, 13],
 [3, 10, 11],
 [3, 12, 14],
 [4, 9, 14],
 [4, 10, 13],
 [4, 11, 12],
 [5, 6, 13],
 [5, 7, 11],
 [5, 8, 14],
 [5, 9, 12],
 [6, 7, 14],
 [6, 8, 12],
 [6, 9, 10],
 [7, 8, 10],
 [7, 9, 13],
 [8, 9, 11],
 [0, 1, 15],
 [2, 3, 15],
 [4, 5, 15],
 [6, 7, 15],
 [8, 9, 15],
 [10, 11, 15],
 [12, 13, 15]]

17人

2が8ゲーム
他が7ゲーム

[[0, 1, 9],
 [0, 2, 7],
 [0, 3, 10],
 [0, 4, 8],
 [0, 5, 11],
 [0, 6, 12],
 [0, 14, 16],
 [1, 2, 10],
 [1, 3, 8],
 [1, 4, 11],
 [1, 5, 6],
 [1, 7, 13],
 [1, 12, 14],
 [2, 3, 11],
 [2, 4, 6],
 [2, 5, 9],
 [2, 8, 14],
 [2, 12, 16],
 [2, 13, 15],
 [3, 4, 9],
 [3, 5, 7],
 [3, 12, 13],
 [3, 15, 16],
 [4, 5, 10],
 [4, 12, 15],
 [4, 13, 14],
 [5, 13, 16],
 [5, 14, 15],
 [6, 7, 15],
 [6, 8, 13],
 [6, 9, 16],
 [6, 10, 14],
 [7, 8, 16],
 [7, 9, 14],
 [7, 11, 12],
 [8, 10, 12],
 [8, 11, 15],
 [9, 10, 15],
 [9, 11, 13],
 [10, 11, 16]
]

18人

1人あたり8ゲーム

[[0, 1, 9],
 [0, 2, 7],
 [0, 3, 10],
 [0, 4, 8],
 [0, 5, 11],
 [0, 6, 12],
 [0, 13, 17],
 [0, 14, 16],
 [1, 2, 10],
 [1, 3, 8],
 [1, 4, 11],
 [1, 5, 6],
 [1, 7, 13],
 [1, 12, 14],
 [1, 15, 17],
 [2, 3, 11],
 [2, 4, 6],
 [2, 5, 9],
 [2, 8, 14],
 [2, 12, 16],
 [2, 13, 15],
 [3, 4, 9],
 [3, 5, 7],
 [3, 12, 13],
 [3, 14, 17],
 [3, 15, 16],
 [4, 5, 10],
 [4, 12, 15],
 [4, 13, 14],
 [4, 16, 17],
 [5, 12, 17],
 [5, 13, 16],
 [5, 14, 15],
 [6, 7, 15],
 [6, 8, 13],
 [6, 9, 16],
 [6, 10, 14],
 [6, 11, 17],
 [7, 8, 16],
 [7, 9, 14],
 [7, 10, 17],
 [7, 11, 12],
 [8, 9, 17],
 [8, 10, 12],
 [8, 11, 15],
 [9, 10, 15],
 [9, 11, 13],
 [10, 11, 16],
]

19人

1人あたり9ゲーム

全員が各参加者とちょうど1回ずつ戦います。

[[0, 1, 9],
 [0, 2, 7],
 [0, 3, 10],
 [0, 4, 8],
 [0, 5, 11],
 [0, 6, 12],
 [0, 13, 17],
 [0, 14, 16],
 [0, 15, 18],
 [1, 2, 10],
 [1, 3, 8],
 [1, 4, 11],
 [1, 5, 6],
 [1, 7, 13],
 [1, 12, 14],
 [1, 15, 17],
 [1, 16, 18],
 [2, 3, 11],
 [2, 4, 6],
 [2, 5, 9],
 [2, 8, 14],
 [2, 12, 16],
 [2, 13, 15],
 [2, 17, 18],
 [3, 4, 9],
 [3, 5, 7],
 [3, 6, 18],
 [3, 12, 13],
 [3, 14, 17],
 [3, 15, 16],
 [4, 5, 10],
 [4, 7, 18],
 [4, 12, 15],
 [4, 13, 14],
 [4, 16, 17],
 [5, 8, 18],
 [5, 12, 17],
 [5, 13, 16],
 [5, 14, 15],
 [6, 7, 15],
 [6, 8, 13],
 [6, 9, 16],
 [6, 10, 14],
 [6, 11, 17],
 [7, 8, 16],
 [7, 9, 14],
 [7, 10, 17],
 [7, 11, 12],
 [8, 9, 17],
 [8, 10, 12],
 [8, 11, 15],
 [9, 10, 15],
 [9, 11, 13],
 [9, 12, 18],
 [10, 11, 16],
 [10, 13, 18],
 [11, 14, 18]]

20人以上

複数のグループにわけます。

おまけ: 3人戦の組み合わせの決め方の背景理論

自分へのメモを兼ねて。

参加人数をnとすると、1卓が3人の場合は n が下の式を満たすときのみ全てのプレイヤーが等しく1戦行うことが証明されています。

n ≡ 1 or 3 (mod 6)

詳しくは Steiner Triple System でググると出てきます、ほぼ英語ページですが。

Sagemath で Steiner Triple System の具体的な組み合わせを求める

Steiner triple system の具体的な組み合わせを求めるには、Linux で Sagemath というソフトを使います。インストールはネットに繋がった Ubuntu で端末から下のように入力するのが楽です。

sudo apt-add-repository -y ppa:aims/sagemath
sudo apt-get update
sudo apt-get install sagemath-upstream-binary

あとは

sagemath

で起動できます。起動したら、

list(designs.steiner_triple_system(15))

みたいに入力すれば組み合わせが表示されます(上は15人の組み合わせが求まります)。

先程も書いたとおり、下の式を満たしてないと組み合わせは求めることができません。

n ≡ 1 or 3 (mod 6)

なので、これを満たさない人数の場合は、人数が近い Steiner Triple System の組み合わせを自分で調整して求めます。この辺はだいぶ適当ですね・・・。

調べたところ Pairwise Balanced Designs というものも便利そうですが、Sagemath では現時点では組み合わせを求められないみたいです、残念。

ちなみに Steiner Triple System や Pairwise Balanced Designs は Block Design というものの1パターンのようです。3人戦以外にもゲームの組み合わせを求めるのにかなり応用が効く可能性を秘めた数学理論だと思います。興味がある方は調べて、どうぞ(丸投げ)