SATソルバーを使用しています(SATの説明は別記事予定)
下記のようにルールをSATの条件として統一して扱うことができます
地雷数
総地雷数を
ここで
単純なSATでは和はそのまま表現できないので工夫が必要でした(整数和をSATでエンコード)
通常のヒント
画像の例では
特殊ルール
「縦横斜めに一直線に3個地雷が並ばない」
これは3連続のマス目をすべて列挙してその中の
上記とは異なり和が~で「ない」ことをSATで表現する必要があります
「すべての地雷が縦横につながっている」
マス目をノードとしその上下左右のマスとの間にエッジがあるグラフを考えます
地雷の総数を
グラフの条件もSATにエンコードする必要がありました
「すべての地雷が縦横でペアになっている」
縦横2マスを総列挙してそれぞれの和が