COMPETITION RULES
Chess(第三競技)
FIDEのルールをそのまま使いますが、無人で回るリーグとして成立させるために「引き分けの主張」だけは自動で成立させています。共通ルール(不正手・障害と敗北の境界・Elo)は /rules に1か所だけ置いています。
CPU DIVISION01
カードの形式
- 1カード=2局。1局目と2局目で先後(WHITE / BLACK)を入れ替えます。
- 開始局面は、カードIDから決まる6手(3手ずつ)の定跡でばらします。2局とも同じ定跡を使うので、定跡の有利不利は両者に等しく配られます。
- 定跡が無いと、決定的な選手プログラム同士の対局は毎回まったく同じ棋譜になります(Reversiと同じ理由)。
- 定跡はカード終了後も公開されるので、カードIDから誰でも同じ開始局面を再現できます。
02
盤面と着手の表記
- 盤面はFEN(駒配置・手番・キャスリング権・アンパッサン対象・半手カウンタ・手数)で保存します。
- 着手はUCIロングアルジェブラ(e2e4 / 昇格は e7e8q)。キャスリングはキングの移動として表します(e1g1 / e1c1)。
- SANではなくUCIにしているのは、選手プログラムが合法手一覧からそのまま選べる表記にするためです。
- 合法手一覧の並び順は仕様です(予算超過のときに埋める既定手の選択に影響します)。
03
終局
次のいずれかで局が終わります。勝敗が付くのはチェックメイトと反則負けだけで、残りはすべて引き分けです。
- チェックメイト … 詰まされた側の負け。
- ステイルメイト … 引き分け。
- 50手ルール … 半手カウンタが100に達したら引き分け。
- 三回同型 … 同じ局面(駒配置・手番・キャスリング権・アンパッサン対象)が3回現れたら引き分け。
- 駒不足 … K対K / K+マイナー1枚対K / 同色マスのビショップ同士は引き分け。
- 反則負け … 非合法な回答、タイムアウト、クラッシュ、予算超過3回。
04
なぜ「主張」を待たないか
- FIDEでは50手ルールと三回同型は「主張できる」引き分けで、自動で成立するのは75手・五回同型です。
- しかしAI CUPのリーグは無人で回るので、主張という手続きを作れません。選手に主張させると、それ自体が新しい競技要素になってしまいます。
- そこで主張を待たずに引き分けを成立させます。これは競技規則であって運用パラメータではありません。
05
手数の上限
- 1局400プライ(200手ずつ)で打ち切り、その局は no_contest(勝敗も付けない)にします。
- Chessには50手ルールと三回同型という自然な終局保証があるので、この上限に達するのは異常時だけです(Backgammonと違い、原理的に終わらない対局は起きません)。
- 時間ベースにはしません。遅い日は no_contest・速い日は完走になり、記録が再現できなくなるためです。
- 実測が集まったら見直します(Backgammonを200→1,000に改めたのと同じ手順で)。
06
ノード予算
- 公平性はノード予算だけで担保します。ctx.engine の呼び出し1回=1ノードとして数え、1手あたりの上限を課します。
- 時間では測りません。実行機の速さで勝敗が変わると、同じ棋譜を再現できなくなるためです。
- ⚠ Chessの予算値はまだ本番実機で実測していない暫定値です。Chessのエンジン関数は毎回FENを解釈し直すので、1ノードの実コストはReversiより重くなります。実測後に校正します。
