Minimum Game2

RemoveBit, Crack, Float, Jump, Reverse

4ビット置く。先手RBはたぶん間違いない。後手はJumpじゃないかなぁ。Floatかなぁ。


通常ゲームのビット置きの状態数が400M、ミニマムゲームのが700くらいと出た。700通りの初期配置から読み切ってみるのも面白そう。双方ヘボイ手だと無限ループするのが問題点。

5枚くらいだったらアドホックに枝狩りしても大丈夫そうだ。RemoveBitは敵のビットを削除、Crackは必ず発動、Floatは3択、Jumpは最初5択、それ以降が2択、Reverseは最後のプレイヤー以外発動しない、でOK。意外と分岐が少ないぞ。

[RB >1 2][C 2 1][F 1 2][J 2][R]

RBは「RBに乗っている敵のビットを削る」の1択だと思うんだよなぁ。

[RB 1][C 2 1][F >1 2][J 2][R]

8:8, ここでの選択肢は左、発動しない、右、の3択。左に移動すると後手がRBを使えるので避けたいと思うけど、即死の線は見えないので読んでみよう。

[RB 1][F 1 >2][C 2 1][J 2][R]

8:6。後手はここでも3択。前に戻ってRBのビットを削除(A)の線で

[F 1 2][RB][C 2 1][J >2][R]

4:2。ふむ、このまま何もしないとFが右に動いてC発動で死ぬなー。Cにジャンプしても死ぬなー。後手負け。(A)に戻る。RBのビットではなくCのビットを消す。

[F 1 2][RB >1][C 2][J 2][R]

1としてはJでCに飛ばれると負けることがわかっているのでどっちかを消す必要がある。2択。Cを消して見る。

[F 1 2][RB 1][C][J >2][R]

特にジャンプするメリットがないのでジャンプしない。Fの1は3択(B)。まずは左に移動してRをコピーする。

[RB 1][C][J 2][F 1 <2][R]

どう移動してもあんまりうれしくないので読みが発散する。保留。(B)で右に移動したとする。

[RB 1][F 1 >2][C][J 2][R]

C発動で8:4。2は左に戻してRBをコピー、RBのビットを削除しないと、次に1がFの2を削除して1の勝ちになる。よってRBのビットを削除。

[F >1 2][RB][C][J 2][R]

1はFを右に動かしてもとどめを刺すことができず次に左に動かされて自分が負ける。ので右はない。左に動かすとどうなるか

[RB][C][J 2][F 1 <2][R]

うーん、これ千日手だね。やっぱ(B)で左に移動したケースを読むべきか。

[RB 1][C][J 2][F 1 <2][R]

こっちの方がRBのビットが残っている分だけ1有利なので1が右に移動させる選択肢はないな。

んー。人間が読んでいるのがばからしくなってきた。でも千日手をどうにかしないとプログラムで読みきれないな。