ハンゲームビンゴ

 今日はハンゲのビンゴゲームにハマった一日だった。ルールは割愛するがこれは結構単純なゲームで、今、全探索が可能なのではないかと思ってプログラムを書いて分析しようと思っている。5列以上ビンゴになるとあがりになるんだけど、5列以上になるのは298通りしかない。もちろん、5*5のフィールドを裏返したり回転させたりして重なるものは同一視している。例えば、

■■□■■ ■■■■■
■■■■■ ■■■■■
■■■■■ ■■■■□
■■■■■ ■■■■■
■■■■■ ■■■■■

 この二つは同じ(□がまだ開けられない数字、■が開けた数字)。
 5列揃えるには最低16個開ける必要がある。

■□□□■ ■□□□■
■■□■■ ■■■■■
■□■□■ □□■□■
■■■■■ ■■■■■
■□□□■ ■□□□■

 16個で5列はこの二つだけ。17個だと18通り。ちなみに左上が一番上の桁、右に向かって桁が下がっていって改行するとまた左に戻って右に・・・といって右下が一番下の桁になる25桁の二進数で盤面を数値化し、回転や裏返しで同じ盤面になる群は、数値の大きさが一番少なくなるものを代表にして正規化している。例えばこの二つの盤面はそれぞれ

左:(1000111011101011111110001)_2
右:(1000111111001011111110001)_2

 となる。
 自分が選択する番以外はランダムでマスが開く、あるいは開かないため、最善手は比較的楽に求められるんじゃないかと思う。授業中に暇だったので作ったのだった。たまにはこんな日があってもいいだろ?