トーナメント作成 ① 2の倍数に切り上げる
とある事情から、簡単にトーナメント表を作りたくなった。
そこで、Excelで簡単に作れないか、今日から試してみようと思う。
手順など、恐らく世の中では既に確立しているのだろうが、勉強のためにもやってみよう。上手くいったら、ご喝采。失敗しても、ご愛敬ってことで。
最初の挑戦として、トーナメントの段数を求めてみよう。二人ずつ戦って勝ち残りとなる訳だから、最後の一人になるためには、2の倍数で1回戦を構成すればよいと仮定する。
図に書くと、こんな感じだ。
中途半端な場合、例えば6人の場合も、最初に片方ずつを埋めると考えれば成立しそうだ(書いていて、パウリの排他原理を思い出した)。
↓ 順番に片方から埋め、次いで残りを埋める。
※まず、埋めるだけ。
↓ 対戦相手がいない場合、山を一つにする。
なお、今は単純に統合しているだけなので、
どの選手がシードとなるかなどは、別途検討することにする。
以上のように考えれば、トーナメントの段数は、
選手が「2のn乗」人であるとき、「n+1」段となる
と言えないだろうか。
では、その数が2の何乗になるかを求めるのは、どうすれば良いか。最もシンプルなのは、常用対数で求める方法だと思う。
ja.wikipedia.org
これを踏まえれば、切り上げて1を加えることで、段数を求められそうだ。
次回に続きます。
参考まで。