2009年8月10日月曜日

(35) 探索法の表示方法

 数独を解くにあたって、どのセルから、どの数字が、どのような順番で満たされていくのか。またそれは、どのような探索法を使えばよいのかが分かればよい。数独のどの本にも、最終結果(以後 final answer と呼ぶ。)は示してあるものの、それにいたる途中経過が示されていないので、行き詰まったときどのような手順を使うのかがはっきりしない場合がある。そこで、VBAソフトでは、決定される順にその探索法をアウトプットできるようにした。

 数独の解法は山に登るのと同じで、いくつかのルートがある。人間が解くのと同じとは必ず一致するものではないが、ソフトで求めた一つの手順があれば、それを参考にして人間が解く段階で行き詰ったときには「次の一手」を示すことが出来る。その論理は、コンピュータの手順と人間のそれまでの決定セルを比較して、コンピュータの手順に初めて表れる未決定セルが「次の一手」となる。

 ソフトで手順を示すには、基本サーチを徹底的に検索する。しかる後、V, G, Q などのサーチを使うのだが、これらは基本サーチではないので、このサーチを行った後、また、基本サーチを繰り返せばよい。具体的には、基本サーチ ”B” では、
   sch=""
   extra="B"
とおき、  sch=sch & extra  をループの中にいれる。 結果、”B" は最初の Bサーチで求まったもの、さらにその結果を使って、求まったものは、”BB" をなる。

さらに、基本サーチ以外では、そのサーチ・マクロを通ったとき、 sch="V" のようにする。その結果、
基本サーチの ”L” で求まると ”VL" のように、表記される。これらの表示はその決定されたセルと数字とともに、決定順にカウントされ、アウトプットされる。

0 件のコメント:

コメントを投稿