マインスイーパーのソルバーを作った

昨日今日の土日にオープンキャンパスがあり、研究室紹介で利用するためにマインスイーパーのソルバーを作ったのでGitHubにあげました。

C#/WPF(with Livet)で作成しました。 オープンキャンパスという締め切りに間に合わせるためにコードが色々と酷いことになってます。 でも、もうメンテナンスする気ないのでそのまま公開しちゃってます。

解法

基本的には人間が解く時のやり方そのまま。 具体的(?)な方法はポスターに使ったスライドをちょっと手直しした画像を貼っておくのでそちらで。

f:id:koropicot:20150802235421p:plainf:id:koropicot:20150802235423p:plainf:id:koropicot:20150802235425p:plain 注意点として、このスライドではしっかり触れずに流しているのですが、8近傍がすべて開いていないマスについては分からないということにして解のパターンから除外し、パターンの数が莫大にならないようにしています。 この省略を行うことにより、もしかしたらもしかして解の完全性が失われている(全通り試したら分かる解を見逃す)かもしれません。

あと当然ですが、どのマスも確実に開けることが出来ず1/2とかの確率で当てるしかない状況になると解は得られなくなります。