マンカラも将棋も二人零和有限確定完全情報ゲーム
「マンカラ ナッツ」の評価関数はアプリの説明ページにも書いていますが、先手の貯蔵所に溜まった豆の数 - 後手の貯蔵所に溜まった豆の数を返すようになっています。これは局面の形勢判断をするというよりズバリどっちが勝ちかを判断するための単純な評価関数で、将棋で言えば詰将棋専用の評価関数1のようなものです。将棋でよく駒得とか駒の働きとかの局面の特徴を捉えて形勢判断をしますが、マンカラの形勢判断をどうすればいいのか、いいアイデアが浮かばなかったので単純な豆の数の差だけを評価する評価関数を使っています。
マンカラは将棋ほど変化が膨大ではなく、ゲーム終了までの手数も短いので、いきなり初手から詰み(勝ち)を読みに行くような評価関数を使ってるわけですが、今のところこれで良いかな?と思ってます2。
マンカラの棋譜?
マンカラは棋譜の記述方法が決まっていない?と思うので、指し手の位置を示すために以下の表を使います。
| 0 後手のストア |
13 | 12 | 11 | 10 | 9 | 8 | 7 先手のストア |
| 1 | 2 | 3 | 4 | 5 | 6 |
0が後手のストア、7が先手のストア、1〜6で先手のポケット、8〜13で後手のポケットを示します。
詰めマンカラ(詰めカラハ)
問題1
まずは簡単な問題から。
下の図で先手(下側)は何番のポケットを選ぶのが最善でしょうか?
※クリックで拡大
マンカラに慣れている人だと4と5の豆は動かさずに済ませられるならと思い、1か2か3がいいんじゃないかと見当が付くのではないでしょうか?順に見ていきます。
1を選んでみると
AIは13->ピッタリ->12と進めて以下の局面になります。
こうなると次に先手(下側)は2を選んでも3を選んでも、いずれ豆を溜め込んでいる4や5のポケットを選ばざるを得なくなり、勝負が紛れます。というより逆転して後手が有利になります。この後、2を選べばAIは11、3を選んでもAIは11(横取り2つ)で形勢逆転です。
2を選んでみると
AIは13->ピッタリ->12->横取り(2つ)となって以下の局面になります。
この場合も次に先手(下側)は3を選んでも6を選んでも、パスは出来ないので豆を溜め込んでいる4や5のポケットを選ばざるを得なくなり後手が有利になります。
3を選んでみると
AIは13->ピッタリ->12->横取り(2つ)となって以下の局面になります。
こうなれば次に先手(下側)が2を選べば、相手の11のポケットの豆を横取りしてゲーム終了。先手の勝ちになります。
先手が3を選んだ後、もしAIが13を選ばずに12や11を選んだとしても、先手は4や5のポケットを選ばずに1〜3のポケットを選ぶだけで後手は自陣の豆が無くなっていきゲーム終了、先手の勝ちになります。
念のため確認すると
AIが13でなく11を選んだ場合
先手は1を選んでも2を選んでも後手はピッタリ(連続して着手出来る)が仇となり、自陣の豆が無くなります。
AIが13でなく12を選んだ場合
先手が2を選べば11の豆を横取りして、次にAIは自陣の豆が無くなります。
ということで問題1の正解は3です。
長手数問題
上の画面から先手が3->ピッタリ->6->ピッタリ->1と進むと以下の局面になります。
この段階でAIの形勢Emojiが
になりました。AIは負けを覚悟したようです。負けを覚悟しながらもAIは13を選びました。
13->ピッタリ->12と進んだ局面が以下です。
問題2
この局面で何番のポケットが先手の最善手でしょう?
1を選んでみると
上図のようになりAIの形勢Emojiが
に変わりました。これは詰みを逃したことを意味します。
2のポケットが5個になり、次にピッタリを狙って一見得しそうですが、AIが次に
13->ピッタリ->10と進めて以下の局面になって、ピッタリが防がれてしまいます。
この後はどう変化しても4と5のポケットに溜め込んでいる豆を吐き出すことになり、逆転してAIが有利になります。
2を選んでみると
上図のようになりAIの形勢Emojiも
のままです。AIが次に
13->ピッタリ->10と進めて以下の局面になりますが、
この後は先手(下側)が3のポケットを選べば、1の豆は取られてしまいますが、先手が勝ちます。
気付いた人がいるかも知れませんが、この局面は問題1の局面と同じです。
3を選んでみると
上図のようになりAIの形勢Emojiも
のままです。AIが次に
13->ピッタリ->10と進めて以下の局面になりますが、
先手(下側)は今度は1のポケットを選んで11の豆を横取り、
後手が13->ピッタリ->12で以下の画面。
この局面を新たな3手詰問題としてもいいかも知れません。相手陣に豆は一つしか残っていないのですが、間違えると勝負が紛れます。先手はどこを選んでも相手陣に豆が渡ってしまう状態になっています。こういう時、自分に勝ちがあることに気づかず着手する人が結構多いのでは無いでしょうか?また、少し慣れた人だと、「4を選べば相手の13の豆を横取り出来るぞ」なんて読んでしまう人がいるかも知れません。
でも正解は相手陣に無駄に豆を供給しない手、一番豆の少ない2が好手です。
こうなると先手の5の9個の豆は横取りされてしまうのですが、先手には3に一個残っている(一手パスするような手が残っている)のでAIが8を選んでも13を選んでも自陣に豆が無くなり先手の勝ちになります。
ということで問題2の正解は3か2です。
正解が二つあるということで詰将棋で言えば余詰めがあるようなものなので、詰マンカラの例としては良くないのかも知れません。
AIは問題2の局面の前から既にアプリの形勢Emojiが
に変わっていて、詰みを読み切っていたわけです。人間が読み切るのは大変かもしれませんが、形勢Emojiが
に変わったら詰み(勝ち)があるということなので、マンカラを詰将棋を解く気持ちで楽しんでみるのも面白いと思います。
ボードゲームは必勝法追求より楽しんだ者勝ち
アプリをリリースしてからは、テストも兼ねてgoogle play内のマンカラアプリをいろいろダウンロードして試しに遊んでみました。必ずしもダウンロード数が多いアプリが強いわけではなく、強さとユーザーの評価とはあまり関係ないようです。宣伝にどれだけ金かけているかの違いだと思いますが、強いソフトが商売として成功するとは限らない点は将棋アプリについても言えることでしょう。
ただ、強いアプリはどれもだいたい似たような指し手になるようで、何度も対戦していると勝ちパターンも分かってきて楽しめなくなります。将棋ほど変化が多くないので仕方がないのかも知れません。そこで「マンカラ ナッツ」では、最強のやばいモード以外の強い、弱いモードでは初手を評価値とは関係なく乱数で選ぶようにしています3。初手を乱数に変えるだけで全てのパターンに対応するのは難しく、勝ったり負けたりゲームを楽しめると思います。自分はやばいモードでは先手の時の勝ちパターンが分かってきたのですが、強いモードでは先手でも勝てない時が多いのでいつも強いモードで遊んでます。
-
詰将棋専用の評価関数と書きましたが、実際にそういう専用の評価関数が使われているソフトが存在するかは知りません。ただ全局面を完全に読み切れるのであれば本将棋でもこういう単純な評価関数で十分なわけです。将棋の場合完全には読み切れないので、形勢判断のためにいろいろな特徴量(駒得、玉の固さ等を数値化)を使って評価する必要が出てくるのですが、その形勢判断の精度が高い評価関数であれば、詰将棋用とか形勢判断用とか分けなくて済みます。 ↩
-
マンカラで形勢判断するとしたら、自陣にある種子(豆)の数とか、横取りされ易さ(対称の位置にある相手のポケットが空かどうか)とかを数値化するのでしょうか?よく分かりません。 ↩
-
全てのモードで評価値が同じ場合は乱数で着手を選ぶようになっていますが、初手に関しては評価値が低い手を敢えて選ばせているという意味です。 ↩















