現在、マインスイーパーのソルバーをC#で作っているのですが、どうにもわからない点があるため質問させていただきます。
マインスイーパーのルールをご存じなくてもいいように、一般的な書き方にさせていただきます。
以下のような内容のプログラムを組みたいのですが、どうすればいいのかさっぱりわかりません。大まかでも大変ありがたいので、よろしくご教授願います。
内容としては、
・各変数は0か1の値をとる
・変数の組み合わせによる合計値から、各変数の値(0か1)を求める
・変数が0か1かわからない場合があり、わかった変数にわかった値を代入する
という感じです。
例えば、
{a,b}は1
{b}は1
{b,c,d,e}は3
{d,e,f}は1
というような場合、
〇{a,b}は1、{b}は1より、
a=0,b=1
〇{b,c,d,e}は3、b=1より
{c,d,e}は2
〇{c,d,e}は2、{d,e,f}は1より、{d,e}は1以下だから
c=1
〇{c,d,e}は2、c=1、{d,e,f}は1より、{d,e}は1だから、
f=0
まとめると、a=0、b=1、c=1、f=0、{d,e}は1
となります。
このような計算をプログラムで行いたいのですが、どうすればいいのかさっぱりわかりません。
考え方や方法などを教えていただけると助かります。ソースコードなどはなくても大丈夫です。
マインスイーパーに当てはめると、変数がマスで、0と1の値が地雷がない、あるという意味になります。
自分で調べて分かったことは、制約充足問題というジャンルに当てはまるということなのですが、バックトラックやヒューリスティックのような単語が出てきてよくわからず、マインスイーパーはN-Queens問題や地図彩色問題ほど深い探索が必要になるとは思いませんでしたので、それ以外の方法を考えているのですが、思いつかないためご質問させていただきました。
初めての質問のため至らない点が多々あるかもしれませんので、その点も含めご指摘いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー