終局条件

投稿者: | 2017-03-06

公式ルール

対局の終局条件について公式ルールに準拠できるようにします。
日本連珠社作成のルールブックの「8. 終局・決着 (勝敗および引き分け)」に終局条件についての規定があります。

  1. 反則行為の指摘などにより、審判が何らかの裁定を下したとき、 それに従うものとする。
  2. 一方の対局者が投了の意思表示をしたとき、 その対局者が負け、他方の対局者が勝ちとなる。
    • 投了の意思表示は、8-1項を除くすべての決着よりも優先される。
  3. 両対局者の持ち時間が切れていたとき、引き分けとなる。
  4. 一方の対局者のみ持ち時間が切れており、それが証明されたとき、 時間が残っている対局者が勝ち、時間が切れている対局者が負けとなる。
    • 8-3項および8-4項の時間切れは、 8-5項〜8-10項のすべての決着よりも優先される。
  5. 両対局者によって引き分けの合意がなされたとき、引き分けとなる (合意満局)。
  6. 両者が競技の終了を宣言したとき、引き分けとなる。
  7. 両対局者が連続して着手を放棄したとき、引き分けとなる。
  8. 五連を証明できた対局者を勝ちとする。白は長連も同様である。
  9. 白は黒の禁手を証明できたとき、勝ちとする。ただし
  10. 225の交点が全て埋まったとき、 上記8-1〜8-9 のいずれにも該当しない状況であれば引き分けとする。
  11. 終局は時計を止める行為によって成立するが、 明らかな意思表示があった場合も有効とする。 紛らわしい行為や発声は、トラブルの元となるので極力避けること。 状況によっては、審判が罰則を科すことがある。

実装上の前提と対局者のフロー

公式ルールは対局者が五連や時間切れを見落としてしまうケースを想定した規定がありますが、プログラムで解析や対局を行う上では以下の前提を置いて終局条件をシンプルにします。

  • 対局者および対局者以外の反則はないものとする
  • 時計の押し忘れはないものとする
  • 時間切れは直ちに審判より指摘されるものとする
  • 五連、禁手は直ちに対局者より証明されるものとする

この前提の下では対局者のフローは以下になると思います。

このフローを実現できるようにライブラリの仕様策定、実装を進めていきます。

「競技の終了」とは?

今回改めて公式ルールを調べてみるまで知らなかったのですが「着手の放棄」(いわゆるパス)以外に「競技の終了」が規定されています。具体的には

7-5 盤上に着手する箇所が全くないと判断した時は、 対局相手にそれを宣言して時計を押し、競技を終了することができる。 その際他方の対局者は、終局まで連続して着手することが認められる。 または自らも競技を終了し、満局を成立させることができる。

  • (附 1)着手の放棄は一手単位のものであるが、 競技の終了とはその後着手を行なわないことを意味する。 この場合、例えば白200まで打たれた時点で黒が競技を終了したのであれば、 以下の白の着手は白201、202、白203…となる。
  • (附 2)着手放棄の際に対局相手が不在であった場合は、審判を呼んで宣言する。 ただし、時計は審判を呼ぶ前に押して差し支えない。

と規定されています。

正直、「競技の終了」を宣言するシーンがイメージつかないのですが

  • 相手にどれだけ連打されても負けない
  • 自分がどれだけうまく打っても勝ちはない
  • 着手もしくはパスを続けると時間切れで負けになる可能性がある

くらいの条件が成立した時くらいしか「競技の終了」を宣言する必要性が生じないと思います。わざわざ公式ルールに規定されているということは過去に必要になったことがあったということなんでしょう。「着手の放棄」すら対応していないプログラムがほとんどなのでこの「競技の終了」に対応しているプログラムはもっと少ないでしょうね。

一応、指し手定義の中に「競技の終了」に対応する

kDeclareEndGame

を追加しました。

また、「白200まで打たれた時点で黒が競技を終了したのであれば、 以下の白の着手は白201、202、白203…となる。」という規定も表示系のプログラムで例外的な処理を入れる必要があり嫌らしいですね。一応、タスクリストには入れつつも対応の優先度は低くなりそうです。

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください