« まあさスクリプト1.20 | トップページ | 棋譜DB »

2011-06-27

トーナメント表

トーナメントの割り振り方を考えていて、いろいろ考えていたらトーナメント表を書くスクリプトができた。
下のシード方法の数字をうまく計算出来ないかと考えていてビット演算で求まることが分かり、またそこに至る過程でトーナメント表を描くアルゴリズムもひらめいた感じだ。

機械的にシードを設定する、次のようなアルゴリズムが知られている。
1. 最初に過去の成績などから仮の順位を決め、トーナメント表の片方の端に1位の参加者を、もう片方の端に2位の参加者を配置する。
2. 3位以下を順に、トーナメント表の頂上から以下のルールに従ってたどることによって配置する。
 ・先に配置されている参加者の数が少ない山を選ぶ。
 ・同数の場合は、山の最下位の順位が低いほうを選ぶ。
例えば6人の参加者をこれに従って配置すると、{1-(5-4)}-{(3-6)-2} という組み合わせが得られる。8人だと {(1-8)-(5-4)}-{(3-6)-(7-2)} となる。上位になるほど強い相手と早く当たる可能性が低く、また試合数も少なくなって多少は有利である。
(jp.wikipedia.org トーナメント方式 シードより)

トーナメント表テキストmaker
http://shogi.servegame.com/tournament/tournament.cgi

アルゴリズムについてはなかなか上手く出来ていると思うのでそのうちここにでも書いてみたい。
また、勝ち上がった時に太い線で描く部分についても既にアイデアがあるので、そこまで出来るようなスクリプトも組みたいと思っている。

|

« まあさスクリプト1.20 | トップページ | 棋譜DB »

その他」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1326191/40562177

この記事へのトラックバック一覧です: トーナメント表:

« まあさスクリプト1.20 | トップページ | 棋譜DB »