2009年6月29日月曜日

(24) 補足 search_table

これは(23)search_table マクロの補足である。いま、Sheet1 の(7,2)から(15,10)のRange の81個のセルに数独の問題が書かれている。その中の空白セルのすべて (empty_cell 個) に対してそのセルに入る可能性のある数字の候補を 11列目から (10+empty_cell) 列にわたって選び出す。その空白セルの順番が numj である。10+numj 列の行には、次の情報が入る。
  4行目 セルの行 (iii)
  5行目 セルの列 (jjj)
  6行目 セルの番地 ( iii, jjj )
  7行目から15行目までは候補の数字
  16行目 候補の数
  17行目 Block の番号

候補の数字の選出は、まずBlockごとに、数字1から9までが候補になりえるかを check する。行と列に対しては、check の中で Block に対しては checkmate で行う。表出数(givens) でない候補は sheet1 の search table にかきこまれる。

table を作る方法はいろいろあると思われるが、このアルゴリズムでの長所は、7行目から書き込まれる候補の数字は小さい数字の順番であることである。このことは後々探索法のアルゴリズムを簡単にしている。

0 件のコメント:

コメントを投稿