2009年5月23日土曜日

候補の一覧を作るマクロ

数独のプログラミングの最初は、空白セルに入る可能性のある数字の候補(candidate)の一覧表をつくることだった。いまでは candy_table とよび、洗練されたものになっているが、当初は mixy あるいは mixy_part と名付けたゴテゴテのマクロであった。

mixy のアルゴリズムは数独の表出数(以後 Givens とよぶ)以外の空白セル(Empty cell)を対象として、 check というマクロにて、そのセルと同じ列、同じ行、同じブロックにすでに Givens があるかどうかを順次1から9までチェックするものである。

とりわけ同じブロックにあるかどうかのチェックは checkmate というマクロを別につくり、Givens があれば flag をたてて戻すようにした。この方法は後に、カラーナンプレとかジグザグナンプレとかに流用する場合このマクロだけを変更すれば容易に達成できた。

mixy_part は group_search というマクロでブロックを限定して候補の数字を見つけだすものだ。mixy では最後に各空白セルの候補の数をカウントする count_kosuu というマクロがついている。候補の数がひとつだとそのセルの数字(digit と呼ぶ)が特定できる。これがプログラムでは一番簡単にわかる探索法(のちに M-search とよぶ)なのだが、実際には、探しにくいので中級あるいは上級にランクされている探索法である。

 

0 件のコメント:

コメントを投稿