マインスイーパ確率解析 (ver.2.0)


概要

マインスイーパの解きかけの盤面での、全セルの地雷がある確率を計算します。 詳細はパズル的マインスイーパ攻略法研究Study 6を 参考にしてください。Study 6の内容は全部盛り込んだのでかなり高速です。

開発

mswin32版 Ruby 1.8.5-p35 + mswin32版 VisualuRuby(仮称) 060205(swin) 061102(vruby) + Exerb 4.1.0

いままで自分にとって楽な言語という意味でJavaScriptで作られていたのですが、 スキルが最近上がってきたため、Rubyで作り直してみようと思ったわけです。

動作対象

Windows 2000/XP(日本語版)、とそれに付属のマインスイーパ。 ただし、バージョンの違うWindowsやマインスイーパ実装に対しても、 自分で画面定義ファイルを作成するか、テキストファイル読み込み機能限定なら使えます。

動作確認

Windows XP Home SP2 [Intel Celeron 2.93GHz, 256MB RAM]

スクリーンショット

困った…困った…
アプリケーション画面確率を計算させてみよう
確率解析完了!計算完了

↑の図の色分けは、
青(#0000FF)=0%, 水色(#00FFFF)=10%, 黄緑(#00FF00)=20%, 黄色(#FFFF00)=50%, 赤(#FF0000)=100% です、目安にしてください。

この他、テキストファイルを読み込んで計算することもできます。(ver.1互換機能)

利用・転載・改変

すべて自己責任でご自由に。作者は一切を保証しません。転載や改変版の公開時にはメールで連絡があると嬉しいです。

その他

元が確率解析の研究目的のプログラムなので、 「地雷の有無が確定するところだけを効率よく調べる」とか「自動で再計算する」とか 「ユーザが操作しなくても自動で解く」とかの機能は載せる気がありません。 そのへんの機能をお求めの方は他所のマインスイーパ補助アプリケーションを使うか、 プログラムを改変してください。

追加画面定義ファイル

ダウンロードしてmineprob.exeと同じフォルダに置くと使えるようになります。画面定義ファイルを作った方がいたら、連絡をいただければ追加いたします。特にWindows 9x用、Windows Vista用を作った方がいれば是非配布させてください。というかVistaは残地雷数カウンタが派手に違うから今の設計では作れないかも。

今後の計画

履歴

ver.2.0 (2007/10/27)
  • 確率計算にグループ化を実装し高速化、探索を深さ優先から幅優先にする。 ついでに確率計算処理を派手に書き直す(見通しはだいぶ良くなった)。
  • ゼロ割系バグを大量処分。
  • 例外を捕捉する場所を増やしたので落ちることはだいぶ減ったはず。その後のエラーメッセージが手抜きだけど。
  • GUI版をしばらく使っているとプロットが白くなって、以後動かなくなるバグを修正。
  • GUI版とCUI版の機能をほとんど同じにする(GUI版のテキスト読み込み追加、CUI版の画面読み込みで確率の色をプロットするようになる)。 そのついでにCUI版はexe配布しないことに(GUI版も安定してきたことだし)。
  • 確率を再プロットするボタンの追加。
  • 画面を読み書きの定義をスクリプト内から画面定義ファイルに追いやって、違うマインスイーパ実装への拡張を簡単に。
  • readmeを画面定義ファイルの解説画像を貼りたいためだけにHTML化する。
ver.2 beta 2
  • GUI版で色のプロットがだんだん重くなる+おかしくなる問題を修正。
  • 確率計算(というか計算の前処理)を間違えることがあるのを修正(+200%とか-50%とか出ることがあった)。
  • 「置いてある旗を信用しない」チェックをGUI版から削除(常にONにした)。
ver.2 beta 1
Rubyで一から作り直し。
ver.1.01
ソースをいじらなくてもログを参照可能にした。エラーにちょっと強くした。
ver.1.0
JavaScriptでとりあえず作ってみた。