日本バックギャモン協会 https://backgammon.or.jp/forum/ |
|
日本選手権 自動抽選システムを開発しました https://backgammon.or.jp/forum/viewtopic.php?f=10&t=3440 |
ページ 1 / 1 |
作成者: | nishiken [ 2013/09/30 23:40 ] | ||
記事の件名: | 日本選手権 自動抽選システムを開発しました | ||
去年は日本選手権のドローの際に不手際があり、参加者の皆様にはご迷惑をおかけしました。 その反省を踏まえ、今回自動で行うシステムを開発しました。 ドローはトーナメントの結果を左右する非常に重要な部分でもあるので、実際に使用するシステムをここに公開いたします。 システム名: Bacon (Backgammon Computer System) 要件定義:西澤健二 構築:吉岡奈美 操作方法:所定の欄に参加者の名前を記入し、2枠申込の場合はその隣の欄に○をして、ボタンを押せば、乱数を発生させてすぐにトーナメント表が完成するようになっています。(最大128枠まで対応しています。) ※まだβ版であるため、B or C列以外記入したり、上から詰めて書かないと誤作動が起こります。
|
作成者: | fairytails [ 2013/10/01 00:49 ] |
記事の件名: | Re: 日本選手権 自動抽選システムを開発しました |
公開するのはいいことですね。 それで、この抽選ルール(プログラム作るもとになったルールが あるでしょうから)もここに書いていただけるとありがたいです。 それにしたがって正しく動いているか検証したい人もいるでしょ うから。 |
作成者: | kinchan [ 2013/10/01 03:15 ] |
記事の件名: | Re: 日本選手権 自動抽選システムを開発しました |
自動プログラムの作成及び公開は大変良いことだと思います。 作業に関わられた方に敬意を表します。 |
作成者: | 吉岡奈美 [ 2013/10/01 06:33 ] |
記事の件名: | Re: 日本選手権 自動抽選システムを開発しました |
仕様の概要です。 1.エントリNo.を振る(A列) 2.BYE判定 (1) A~B列の情報をAA~AB列に複写する。 (2) 二枠(C列入力)の人はAA~AB列に二重に登録する。 (3) AA~AB列の横AD列に乱数をふり、AD列(乱数)で降順にソートする (4) AC列(BYE)を上から[トーナメント枠-申込枠数]の値だけ○を記入する。 (5) A列(エントリNo.)を元に、AA列の値の和(枠数)を照合し、持ち枠をD列に記入する 3.ランダムに並べる (1) F列に1~参加人数の乱数を並べる (2) 枠数、申込枠、F列の値を元に降順にソートする ※この後、このF列のIDは使わないので、上書きされる(⇒値が消失する)。 4.エリアIDの生成 エリアとIDは、トーナメント表の四枠を1組としたどのエリアに該当するかの値です。 1つのエリアIDは4枠を持ちます。 エリアはトーナメント表のうえからどの範囲に該当するかの位置を示します。 (1) F列に以下の値を上書きする ・ 最初の値を1とする ・ 2行目~最終行 - 2枠申込の場合は、[前行の値+1] - 1枠申込の場合は、[前行の値+持ち枠/4] ※ この後、このF列のIDは使わないので、上書きされる(⇒消失する)。 (2) E列(仮ID)にF列の小数点なしの切り上げを行う (3) F列(エリアID)の値を上書きする この工程では、仮IDをもとに4枠や3枠が同じトーナメントエリアにならないようにばらけさせる処理をします ・ トーナメント枠(D2セル)をLog(2,トーナメント枠数)の値を出す ※2の何乗かを求める ・ 仮ID(E列)を元に、XEW~XFD列の前出Log(2)値の列を参照し、エリアIDをふる。 ・ ERRORが出る値は0を振る 5. ちょっと確認 H~I列にエリアIDとそのIDの持つ枠数小計を書いてみました。 6.三枠などの足りない枠に当てはめ ・エリアIDにERRORが出て0の値には、最小母数のエリアの値をつける (ID順で) |
作成者: | fairytails [ 2013/10/01 11:47 ] |
記事の件名: | Re: 日本選手権 自動抽選システムを開発しました |
詳細ありがとうございます。 これの元となったルール(プログラムではなく、一般的に公開される 抽選方式)もお願いします。 私は昨年と同じ方式と聞いた上で2枠目を取ったので、そのとおり であるかを確認したいためです。同様に2枠目を取るかどうかの判 断理由になる人も多いとも思いますので。 また、コンソレに関してもプログラム抽選なのでしょうか。そうでした ら、それに関しての詳細もお願いします。 |
作成者: | nishiken [ 2013/10/01 12:56 ] |
記事の件名: | Re: 日本選手権 自動抽選システムを開発しました |
ルールは以下の通りです。コンソレには対応していないため、手動になります。 =日本選手権 ドロー方法= 参加者を以下のように便宜上分類し、抽選を行います。まずbyeかどうかをすべての参加者別に抽選し、次にトーナメント上の位置について抽選します。 添付ファイル: chart.PNG [ 4.52 KiB | 閲覧された回数 7438 回 ] Ø 128は各ブロック4人とし、ブロック1~ブロック32とする Ø 各ブロックはα、β、γ、δから構成(例;ブロック14のβ;通算すると上から54/128番目) Ø Byeの数=128-n Step.1 ②、①のリストを作る Step.2 すべての参加者にbyeか否かを決める(まず②) ②は2回ひく~Bye抽選カードの枚数は総数でn枚、そのうちBye=赤は128-n枚 ②は②a、②b、②cに分類される Ø ②a 2回中2回byeを引いた場合(α~δ) Ø ②b 2回中1回byeを引いた場合(α~γ) Ø ②c 2回中0回byeを引いた場合(α~β) (②=②a+②b+②c) Step.3 引き続き、参加者にbyeか否かを決める(次に①) ~Step.2の残りをそのまま使う Ø ①は①c、①dに分類される Ø c 1回中1回byeを引いた場合 Ø d 1回中0回byeを引いた場合 (①=①c+①d) Step.4 ②a、②b、②cについてブロックを抽選 配置についてはブロック1、同32、同16、同17…と可能な限り2枠保持者同士の対戦が上のラウンドとなるようにする。 Step.5 ① cを抽選 この際①c同士を対戦するよう組む (① cが奇数の場合、①cの1人が②cと対戦) Step.6 ①dを抽選 ※64人以下の場合ブロック数が32→16へ減じ、ベスト16=a、以下スライドさせて考える Step.7 勝ちを○、負けを×とすれば、 Ø ②c× Ø ②b×× Ø ①d○× Ø ①d× Ø ①c× の順にコンソレーションのbyeの権利がある 注) 非常に少ない確率ですが、3枠者が1枠者より多かった場合は下記のように処理します。 1) 3枠者vs1枠者を最大限組み合わせます。 2) 残りが3枠者だけになったら、3枠者vs3枠者で当てて、3枠のうち1枠だけの勝負をしてもらいます。 (かならず3枠者は偶数人存在します) 3) 3枠者vs3枠者の勝者を4枠者とします。 4) 3枠者vs3枠者の敗者を2枠者とし、2枠者と当てます。 (かならず2枠者は対応する数だけ存在します) *2)と3)のプロセスはトーナメント表に書かず、3)が終わり次第トーナメント表に書きます。 2)の結果によって誰が2枠者とやるかが変わってくるため、あらかじめトーナメント表には書けません。 |
作成者: | fairytails [ 2013/10/01 22:09 ] |
記事の件名: | Re: 日本選手権 自動抽選システムを開発しました |
ありがとうございました。昨年と同じ方式ですね。 |
ページ 1 / 1 | All times are UTC+09:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |