ゲームというかパズルというか詰将棋の話。

プログラミングを始めるより前に詰将棋が好きで自分で作ったりもしていたのだけど、これには勝てないと心の底から思った作品が一つある。それは『最後の審判』だ。内容は作者自身が解説しているのでそちらへリンク(http://www2u.biglobe.ne.jp/~nuida/h/t/syokei.htm)。さらにその原因となったルールに関する解説もリンク(http://kofu.cool.ne.jp/mozuyama/mozuiro/moromoro/shinpan.html)。これは要するに「ルールの不備を絶妙に突くとこんな面白いことになる」という作品だ。
メタレベルで見ればルールの項目間に優先順位が設定されていないのが最大の欠点だろう。例えば、終局ルールと勝敗ルールを分けると自然な優先順位が付けられる。例えば下のように。

  1. 以下の状態のうち一つ以上を満たすとき終局とする。終局時は付随する条件により勝敗を決定する。
    1. 一方(以下A)が二歩または行き所のない駒の場合(省略)。
    2. 1-1.に該当せず、一方(以下A)が他方(以下B)の玉に王手をかけており、Bの玉の利きの全てがBの駒またはAの駒の利きで埋められており、Bが間駒をできない場合。
      1. Aの最終着手が歩打ちならばAの負け。
      2. Aの最終着手が歩打ち以外ならばAの勝ち。
    3. 1-1.または1-2.に該当せず、持ち駒と盤面が同一である局面が4回現れた場合。
      1. 当該局面が3回目に現れてから4回目に現れるまでの手順が双方ともに王手のみならば引き分け(本将棋では不可能)。
      2. 当該局面が3回目に現れてから4回目に現れるまでの手順が一方(以下A)は王手のみ、他方(以下B)は王手以外を含むのならばAの負け。
      3. 当該局面が3回目に現れてから4回目に現れるまでの手順が双方ともに王手以外を含むのならば引き分け・指し直し。