概要
2013年には将棋の、2016年には囲碁の**トッププロがコンピュータの前に敗れ去りました。**もっとも、これらのゲームは二人零和有限確定完全情報ゲームである以上、理論上は必勝法が存在します。また、不確定要素があるバックギャモンや麻雀などにおいても、コンピューターはトッププロに迫る実力を出しています。情報技術が日々進歩する現代において、人類vsコンピューターの知恵比べは後者がますます優位になっていくことでしょう。
今回は、そうしたボードゲームの一つとして連珠(五目並べ)を取り上げます。地味に実装が難しいことで有名なゲームですが、どのように実装すればよいかをルールと見比べつつ見ていきます。
基本ルール編
日本連珠社の公式サイトには次のように記されています。
・盤はタテ、ヨコ、15道の「連珠盤」と黒・白の石を使います。
・黒が先で盤の中央から交互に打ち、黒でも白でもタテ、ヨコ、ナナメのどれかに、早く『五連』を並べた方が『勝ち』です。
・黒は五連を並べる前の「三三」と「四四」と「長連」が『禁手』で「打っても、打たされても負け」になります。
・白には禁手がありません。長連は勝ちとなります。
・勝負のつかない時は「引き分け」になります。
一般的な「五目並べ」の場合、上から二つ目までしか気にしないのではないでしょうか。しかし、これらのルールには重大な意味があるのです。なぜなら、禁手を設けない場合、黒が簡単に勝ってしまうからです。囲碁ではコミを用いて先後の均衡を図っていますが、連珠では禁手によって均衡を図っていると言えるでしょう(厳密にはまだ足りないが後述)。
しかしそれにより、ルールを理解するためにはどうしても「三」「四」「長連」の定義についても説明しなければなりません。詳しくは公式サイトの説明を読めばいいとして、各パターンをプログラムでどう実装すべきかをまとめてみました。
(便宜上、黒石はB、白石はW、空白はO、「WかOか盤外」はXと表記する)
種類 | 説明 | パターン |
---|---|---|
五連(黒石) | 5個の石の連 | XBBBBBX ※1 |
五連・長連(白石) | 白石が5つ以上並んだもの | WWWWW ※2 |
長連(黒石) | 6個以上並ぶ石の連 | BBBBBB |
達四(黒石) | 4個の石の連で、同種の石を1個加えると五連になる点が2カ所あるもの | XOBBBBOX ※1 |
達四(白石) | 4個の石の連で、同種の石を1個加えると五連になる点が2カ所あるもの | OWWWWO |
四(黒石) | 同種の石を1個加えると五連になるもの | X[B4O1]X ※1 ※3 |
四(白石) | 同種の石を1個加えると五連か長連になるもの | [W4O1] ※3 |
三(黒石) | 同種の石を1個加えると達四になるもの | XO[B3O1]OX ※3 ※4 |
三(白石) | 同種の石を1個加えると達四になるもの | O[W3O1]O ※3 |
両頭の四々 | 一直線上に現れる四々の一つ | XBOYYYOBX ※5 |
長蛇の四々 | 一直線上に現れる四々の一つ | XBBOYYOBBX ※5 |
双竜(争竜)の四々 | 一直線上に現れる四々の一つ | XBBBOYOBBBX ※5 |
三々々や四三々など | 三々や四々に、五連以外の何が複合しても禁手には変わりない | ― |
引き分け判定 | 盤面の残り全てを白か黒で埋めて、どちらの場合でも五連以上が完成しない場合に終局とする | ― |
- ※1……Xは盤外も含む。したがって、2辺が五つ並んだ黒石の両端に掛かっても五連である
- ※2……白の場合、長連も五連と同じく勝ちなので、あえて区別していない
- ※3……[B?O1]とは、「黒石を?個、空白を1個含んだ全ての組み合わせ」を指す。[W?O1]も同様
- ※4……ここで**「1個加える」操作が禁手によって行えない場合、三ではないものとする。つまり、トビ三なら1箇所、そうでないなら2箇所について禁点かを判定し、それらが全て禁点ならば三と認めない**。
- ※5……このYは、「1つを残して他が全て黒石の状態であり、着手により全て黒石となる」部分を指す
なお、「五連を並べる前」とあることから分かるように、黒において禁手と五連が同時に出来るとそのまま勝ちです。したがって、ある手が合法手かを判定する際は、五連判定→長連判定→直線上の四々判定→三と四を数えて三々or四々判定とすれば効率が良いでしょう。
また、※4において、「三々のうち、片方が禁手のせいで三と見なせない場合は三々ではない(否三々)」といった不思議な現象が成立します(五連は無条件勝ちで、長連の可能性は上記パターンで弾けるので否四々は存在しない)。否三々は判定が面倒なせいか、実装されていない連珠ソフトもそこそこ存在します。
更に、長連筋などで「最後まで打つと黒が確実に敗北する」場合用に、石を打たずあえてパスをすることも認められています……が、否三々よりレアなので実装していない連珠ソフトがほとんどです。
以下に、主なコーナーケースをまとめてみました。
[辺のせいで三にならない]
┌┬┬┬┬
├┼┼●┼
├┼●┼┼
├●┼╋┼
├┼┼┼┼
これは三ではない
[四三々、四々三は禁手]
┼┼┼┼┼┼┼
┼┼┼●●A┼
┼┼┼┼●●┼
┼┼┼●┼●┼
┼┼●┼┼B┼
┼○┼┼┼┼┼
┼┼┼┼┼┼┼
A点は四三々の禁手であり、B点に黒石を打ち込むとA点が四々三になる。
なお、B点に白石が置かれると縦の三が無くなるので、A点がただの四三になる。
[否三々]
┼┼┼┼┼┼┼
┼●┼┼┼┼┼
┼○●●○○┼
┼┼●A●┼┼
┼○○●┼┼┼
┼┼●B●┼┼
┼○┼┼┼○┼
┼┼┼┼┼┼┼
A点もB点も三々禁に見えるが、B点にとっての縦の三は、
A点の禁手のせいで成立していない。したがってB点は否三々。
開幕規定編
随意打ち編
基本ルールで見たように、黒には三種類の禁手が存在しています。ただ、これだけで打つとまだまだ先手必勝であることが黒岩涙香によって示されています。つまり、**「随意打ち(初手が盤の中央=天元、次がその横隣り(直接打ち)か斜め隣り(間接打ち)、その次が初手から一間以内の位置)」**だけでは先後が均衡にならないのです。ちなみに、これ以降説明する開幕規定ルールは、実装が面倒なせいか大抵の連珠ソフトがスルーしています。どうせ「決め事」なので重要度が低く、一通り開幕の所作を行った後は上記のルールだけ考えればいいからですね。
指定打ち編
そこで、**「指定打ち(最初の三手は白が指定する)」**といったルールが誕生しました。三手目までのパターンは次の24通り(彗星と遊星は黒が不利すぎるので除外)の基本珠型から選べますが、これによって「一部の定石(例:花月・浦月)に必勝法が見つかってもヘーキヘーキ」と言えるようになったのです。
[間接打ち]
┼┼┼┼1 間接1号~12号:
┼┼┼○2 長星・峡月・恒星・水月・
┼┼●63 流星・雲月・浦月・嵐月・
┼11974 銀月・明星・斜月・名月
X121085 (Xは彗星と呼ぶ)
[直接打ち]
┼┼123 直接1号~12号:
┼┼○45 寒星・渓月・疎星・花月・
┼┼●67 残月・雨月・金星・松月・
┼┼8910 丘月・新月・瑞星・山月
┼┼1112Y (Yは遊星と呼ぶ)
ところがどっこい、そうじゃありません……!次からが現実です、これが現実……!
五珠二箇所指定打ち
指定打ちで平和になったのも束の間、研究が進むと間接・直接1~12号のほとんどで黒が勝ってしまうことが判明します。もちろん「あえて黒が勝つ方向の定石にして黒のミスを待つ」戦術もアリなのですが、流石に公平ではありませんので更にルールが追加されました。
それがこの**「五珠二箇所指定打ち(3手目まで指定打ちし、4手目も普通に打ち、5手目は黒が2箇所指定し、どちらかを白が選択する)」**です。これにより、とりあえず均衡は保たれるようになりました。
三珠交替打ち
しかし五珠二箇所指定打ちだと、定石のせいで打たれるパターンが比較的偏ってしまうといった難点がありました。そこで、**「三珠交替打ち(仮黒が三手目までの形を示し、仮白が先後のどちらを持つかを決める)」**が現在の日本における公式ルールになっているそうです。
題数打ち・四珠交替打ち・五珠交替打ち
詳細はこちらにありますが、主に国際大会で提案されているものです。つまり、何度も先後を入れ替える判断を行わせることで、なるべく先後均衡、かつ幅広い開幕を迎えられるようにするためのものです。
定石編
連珠における定石は、オセロや将棋や囲碁の定石(定跡)とは多少事情が異なります。なにせ随意打ちだと黒が勝ってしまうので、「数手進めた局面からの定石」の集合体として定義されるからです。とは言っても、**「データベースを参照しつつ、可能な中で最善と思われる手を打つ」**といった基本的な部分は変わりありません。
ただ、なにげにマイナーなゲームだけあって、定石データをかき集めるのは苦労します。データベースを搭載したソフトの一つとして伊達五目がありますが、それを超える勢いで広範囲に渡り集める必要があるでしょう。確か海外のソフトでそうしたデータベースがあったはずですが、リンクを失念しました……。
参考文献
・「日本連珠社」(http://www.renjusha.net/)
・「連珠プログラムを作ってみるブログ」(http://ameblo.jp/quincomet/)
・「五目競争公式ガイド」(http://hp.vector.co.jp/authors/VA009422/5guide0.txt)
・「ルール(対局規定)の変遷史」(http://www.renjusha.net/database/oldrule.htm)