日本バックギャモン協会

バックギャモンに関する疑問や、本サイトの感想等がありましたら、お気軽にお書きください。
現在時刻 - 2024/04/27 14:38

All times are UTC+09:00




新しいトピックを投稿する  トピックへ返信する  [ 7 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2013/09/30 23:40 
オフライン

登録日時: 2011/11/16 21:22
記事: 935
お住まい: 長野
去年は日本選手権のドローの際に不手際があり、参加者の皆様にはご迷惑をおかけしました。
その反省を踏まえ、今回自動で行うシステムを開発しました。
ドローはトーナメントの結果を左右する非常に重要な部分でもあるので、実際に使用するシステムをここに公開いたします。

システム名: Bacon (Backgammon Computer System)
要件定義:西澤健二
構築:吉岡奈美
操作方法:所定の欄に参加者の名前を記入し、2枠申込の場合はその隣の欄に○をして、ボタンを押せば、乱数を発生させてすぐにトーナメント表が完成するようになっています。(最大128枠まで対応しています。)

※まだβ版であるため、B or C列以外記入したり、上から詰めて書かないと誤作動が起こります。


添付ファイル:
bacon.zip [205.85 KiB]
ダウンロード数: 432 回
通報する
ページトップ
投稿記事Posted: 2013/10/01 00:49 
オフライン

登録日時: 2007/04/03 11:21
記事: 1051
公開するのはいいことですね。
それで、この抽選ルール(プログラム作るもとになったルールが
あるでしょうから)もここに書いていただけるとありがたいです。
それにしたがって正しく動いているか検証したい人もいるでしょ
うから。


通報する
ページトップ
投稿記事Posted: 2013/10/01 03:15 
オフライン

登録日時: 2007/08/30 04:03
記事: 442
お住まい: 大阪
自動プログラムの作成及び公開は大変良いことだと思います。

作業に関わられた方に敬意を表します。


通報する
ページトップ
投稿記事Posted: 2013/10/01 06:33 
オフライン

登録日時: 2011/10/03 20:39
記事: 328
仕様の概要です。

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順で)


通報する
ページトップ
投稿記事Posted: 2013/10/01 11:47 
オフライン

登録日時: 2007/04/03 11:21
記事: 1051
詳細ありがとうございます。
これの元となったルール(プログラムではなく、一般的に公開される
抽選方式)もお願いします。
私は昨年と同じ方式と聞いた上で2枠目を取ったので、そのとおり
であるかを確認したいためです。同様に2枠目を取るかどうかの判
断理由になる人も多いとも思いますので。

また、コンソレに関してもプログラム抽選なのでしょうか。そうでした
ら、それに関しての詳細もお願いします。


通報する
ページトップ
投稿記事Posted: 2013/10/01 12:56 
オフライン

登録日時: 2011/11/16 21:22
記事: 935
お住まい: 長野
ルールは以下の通りです。コンソレには対応していないため、手動になります。

=日本選手権 ドロー方法=

参加者を以下のように便宜上分類し、抽選を行います。まずbyeかどうかをすべての参加者別に抽選し、次にトーナメント上の位置について抽選します。
添付ファイル:
chart.PNG
chart.PNG [ 4.52 KiB | 閲覧された回数 6082 回 ]
Ø ①+②=m;参加者数 ①+②*2=n;参加枠数
Ø 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枠者とやるかが変わってくるため、あらかじめトーナメント表には書けません。


通報する
ページトップ
投稿記事Posted: 2013/10/01 22:09 
オフライン

登録日時: 2007/04/03 11:21
記事: 1051
ありがとうございました。昨年と同じ方式ですね。


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 7 件の記事 ] 

All times are UTC+09:00


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[47人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付:  可

ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean