無限三目並べの必勝法

無限三目並べと言うゲームがあります。三目並べ(マルバツゲーム)に似たルールで、自分のコマの4つ目を打つ時に自分の一番古いコマが消えるというゲームです。

このゲームのQ学習をJavaScriptで作っていました。Q学習した結果を対戦相手として遊べるようにしているので、やってみてください。だんだん強くなるようにしています。

https://akiyah.github.io/3x3/public/?type=ThreeState

(最初は弱いですが、ある程度経つと強くなってきます。)

 

この実装を応用して、無限三目並べの必勝法を計算させて記述しました。(Q学習があんまりうまくいかなくて、原因を探すためにも必勝法を知りたかったのです)(必勝法を探すロジックは、全盤面のパターンを内部的に持ち、どちらかの勝利が確定している盤面から、打つ手を逆に辿って計算しています)

無限三目並べの必勝法

 

先手必勝です。先手の最初の手は上、下、右、左のどれかで、それ以外では必勝ではありません。対称性を除いて、必勝法の画像では「上」を選択しています。

後手の最初の手は対称性を除けば5通りあります。結果的には、どのパターンでも先手が勝てます。後手が最も長く生き残るのは、左下か右下を選択したときで、先手が勝つまで13手かかります。

決着がつく最後の盤面は、どれも似ていますね。後手の一番古いコマが消えたところに先手が打って勝利ですね。

 

必勝法を見つけたのはいいですが、覚えるのはちょっと大変ですね。一本道のところもあるのですが、正しく選択しないと負けてしまう箇所もあります。

 

3x3のマス目を使った対戦ゲームはまだ他にもありそうなので、今後は別のルールでQ学習と必勝法探しを続けていきたいです。