トーナメント作成 ① 2の倍数に切り上げる

とある事情から、簡単にトーナメント表を作りたくなった。
そこで、Excelで簡単に作れないか、今日から試してみようと思う。
手順など、恐らく世の中では既に確立しているのだろうが、勉強のためにもやってみよう。上手くいったら、ご喝采。失敗しても、ご愛敬ってことで。
f:id:Infoment:20191013094011p:plain

最初の挑戦として、トーナメントの段数を求めてみよう。二人ずつ戦って勝ち残りとなる訳だから、最後の一人になるためには、2の倍数で1回戦を構成すればよいと仮定する。

図に書くと、こんな感じだ。
f:id:Infoment:20191013094954p:plain

中途半端な場合、例えば6人の場合も、最初に片方ずつを埋めると考えれば成立しそうだ(書いていて、パウリの排他原理を思い出した)。

↓ 順番に片方から埋め、次いで残りを埋める。
※まず、埋めるだけ。
f:id:Infoment:20191013095327p:plain

↓ 対戦相手がいない場合、山を一つにする。
f:id:Infoment:20191013095538p:plain

なお、今は単純に統合しているだけなので、
どの選手がシードとなるかなどは、別途検討することにする。
以上のように考えれば、トーナメントの段数は、
 選手が「2のn乗」人であるとき、「n+1」段となる
と言えないだろうか。

では、その数が2の何乗になるかを求めるのは、どうすれば良いか。最もシンプルなのは、常用対数で求める方法だと思う。
ja.wikipedia.org

f:id:Infoment:20191013101849p:plain

これを踏まえれば、切り上げて1を加えることで、段数を求められそうだ。
f:id:Infoment:20191013102415p:plain

次回に続きます。

参考まで。