2006年8月下旬にかけて、can matrix , g matrix を使ったナンプレ探索法を一気に開発した。参考にした解法は当時の数独本に断片的に掲載されていたもので、下記に示す。
探索法はすでに述べた4つの基本サーチに加えて15個の探索法よりなっている。一つひとつの説明は省略するが、その全体の概要は次の通りである。
探索記号 マクロの名称 探索原理と公表されている解法
(文献は下記に示す)
B B_search あるBlockの中で入るセルが一つしかない数
字を探す。
初級パターン①②③④
point 1
平行線、水平線、垂直線の常識
直交平行線の常識
L L_search ある行の中で入るセルが一つしかない数字を
探す。
初級ショキュウパターン⑤
point 2
C C_search ある列の中で入るセルが一つしかない数字
を探す。
point 3
M M_search 一つしか候補をもたないセルを探す。
中級パターン④、⑤
上級パターン②
point 4
残り物の常識、別方向からの決定
V pair_number_search_process あるBlock 2つだけの数字が水平ま
たは垂直に並んでいるとき、同行ま
たは同列にはその数字は入らない。
中級パターン③
ローカル系
G pair_block_cell_search_process
pair_line_cell_search_process
pair_column_cell_search_process
同Block、同列、同行内で二つのセルが同じ数字の二つの候補だけを
もつとき、Block 内、同列、同行の他のセルはそれらの候補をもたない。
Q double_pair_cell_search 同Block,同行、同列で二つのセル
line_column_double_pair_cell_search が二つの数字を専有する
ときこれらのセルは他の候補を持たない。
上級パターン①
定員確定の法則
コンビネーション系
二重線の常識
T triple_block_cell_search_process
triple_column_cell_search_process
triple_line_cell_search_process
同Block,同行、同列で三つセルが三つの数字を専有するとき
これら以外のセルはその三つの数字の候補を持たない。
三国同盟
P parallel_line_number_search_process
parallel_column_number_search_process
二つの行または列に同じ数字の入るセルが二つありその列
または行が等しいとき他のセルにはその数字は入らない。
四角の対角線
マトリックス系
U triple_parallel_line_number_search_process
triple_parallel_column_number_search_process
三つの行または列にわたり二つの数字をもつ番地が交互に
配列されるとき同じ列または行の他のセルにはその数は入
りえない。
マトリックス系
R triple_pair_block_search
triple_pair_line_column_search
同じBlock,行、列の中の三つのセルに三の同じ数字を持つ
セルがあればそのセルは三つの数字で専有され他の候補
を持たない。
コンビネーション系
S cross_pair_block_search
cross_pair_line_column_search
あるBlockの二つの数字の行または列が等しく、他のBlock
の同じ数字の一つが同行または同列にあるとき残のセルが
その数字になる。
point 5
コンビネーション系
H Hamada_line_search
Hamada_column_search
同Blockの二つのセルと同行、同列にあるセルの同じ二つの
候補より巧妙にこれらの数字を特定する。
浜田ロジック
W pair_number_line_search
ある行の二つの数字の候補が、あるBlockにあるときBlock内
のセルはその数字の候補を持たない。
A output_two_candidate
new_class_search
二つに候補をもつセルの一つの数字を仮定して探索を続ける。
もし行き詰ると、もうひとつの他の数字が特定できる。
矛盾の常識
Y pair_number_column_search
ある列の二つの数字の候補が、あるBlockにあるときBlock内
のセルはその数字の候補を持たない。
X triple_number_search_process
同Block内の3つの候補が同行または同列に並ぶときその行、
列の他のセルはその候補を持たない。
中級パターン②
ローカル系
空き直線の常識
K triple_parallel_line_search
triple_parallel_column_search
二つの行(列)に候補が矩形状に配置されるとき、同じ数字
をもつ他の行(列)の数字が特定される。
四角の対角線
D rectangular_block_line_search
rectangular_block_column_search
二つの行(列)に候補が矩形状に配置されるとき、同行(列)
に同じ数字をもつBlockの数字が特定される。
公表されている解法は次の資料を参考にしました。
(1) ニコリ「数独」名品100選:ニコリ編著 (文芸春秋)
初級パターン、中級パターン、上級パターン
(2) ナンプレ超上級編11 西尾徹也 (世界文化社)
三国同盟、四角の対角線、浜田ロジック
(3) 難問ナンプレに挑戦 2 稲葉直貴 (世界文化社)
ローカル系、コンビネーション系、マトリックス系
(4) 西尾徹也のナンプレBS 100 西尾徹也 (世界文化社)
point 1~point 5、point 6(定員確定の法)
(5) ナンバープレイス解法教室 藤原
http://www.pro.or.jp/~fuji/java/puzzle/numplace/knowhow.1-1
平行線、水平線、垂直線の常識
直交平行線の常識,別方向からの決定
二重線の常識、空き直線の常識
残り物の常識、矛盾の常識
2009年9月24日木曜日
2009年8月10日月曜日
(35) 探索法の表示方法
数独を解くにあたって、どのセルから、どの数字が、どのような順番で満たされていくのか。またそれは、どのような探索法を使えばよいのかが分かればよい。数独のどの本にも、最終結果(以後 final answer と呼ぶ。)は示してあるものの、それにいたる途中経過が示されていないので、行き詰まったときどのような手順を使うのかがはっきりしない場合がある。そこで、VBAソフトでは、決定される順にその探索法をアウトプットできるようにした。
数独の解法は山に登るのと同じで、いくつかのルートがある。人間が解くのと同じとは必ず一致するものではないが、ソフトで求めた一つの手順があれば、それを参考にして人間が解く段階で行き詰ったときには「次の一手」を示すことが出来る。その論理は、コンピュータの手順と人間のそれまでの決定セルを比較して、コンピュータの手順に初めて表れる未決定セルが「次の一手」となる。
ソフトで手順を示すには、基本サーチを徹底的に検索する。しかる後、V, G, Q などのサーチを使うのだが、これらは基本サーチではないので、このサーチを行った後、また、基本サーチを繰り返せばよい。具体的には、基本サーチ ”B” では、
sch=""
extra="B"
とおき、 sch=sch & extra をループの中にいれる。 結果、”B" は最初の Bサーチで求まったもの、さらにその結果を使って、求まったものは、”BB" をなる。
さらに、基本サーチ以外では、そのサーチ・マクロを通ったとき、 sch="V" のようにする。その結果、
基本サーチの ”L” で求まると ”VL" のように、表記される。これらの表示はその決定されたセルと数字とともに、決定順にカウントされ、アウトプットされる。
数独の解法は山に登るのと同じで、いくつかのルートがある。人間が解くのと同じとは必ず一致するものではないが、ソフトで求めた一つの手順があれば、それを参考にして人間が解く段階で行き詰ったときには「次の一手」を示すことが出来る。その論理は、コンピュータの手順と人間のそれまでの決定セルを比較して、コンピュータの手順に初めて表れる未決定セルが「次の一手」となる。
ソフトで手順を示すには、基本サーチを徹底的に検索する。しかる後、V, G, Q などのサーチを使うのだが、これらは基本サーチではないので、このサーチを行った後、また、基本サーチを繰り返せばよい。具体的には、基本サーチ ”B” では、
sch=""
extra="B"
とおき、 sch=sch & extra をループの中にいれる。 結果、”B" は最初の Bサーチで求まったもの、さらにその結果を使って、求まったものは、”BB" をなる。
さらに、基本サーチ以外では、そのサーチ・マクロを通ったとき、 sch="V" のようにする。その結果、
基本サーチの ”L” で求まると ”VL" のように、表記される。これらの表示はその決定されたセルと数字とともに、決定順にカウントされ、アウトプットされる。
2009年5月25日月曜日
数独の基本サーチは4つだけ。
数独の基本的な探索方法は4つだけです。それは ①ブロック、行、列に候補をひとつしか持たない数字をさがす。 ② 候補をひとつしか持たないセルを探す。ことです。①が三つでそれぞれ B search, L search, C search と呼ぶことにします。また②は M search となずけました。
四つ合わせて BLCM search とよび、これが基本サーチです。初級問題は大体見落としさえしなければこれで解けます。例えば、「ポケット数独初級編」や「ナンプレ160問」(竹書房)は全問解けました。また、「ニコリ数独名品100選」では70問が解けます。数独の面白さはこれ以外の中級、上級の探索法を見つけることにあるようです。
私の作った最初のプログラムは B とM サーチにだけ対応するもので、これでも「ナンプレ160問」では143問、、「ニコリ数独名品100選」では51問を解くことができました。
四つ合わせて BLCM search とよび、これが基本サーチです。初級問題は大体見落としさえしなければこれで解けます。例えば、「ポケット数独初級編」や「ナンプレ160問」(竹書房)は全問解けました。また、「ニコリ数独名品100選」では70問が解けます。数独の面白さはこれ以外の中級、上級の探索法を見つけることにあるようです。
私の作った最初のプログラムは B とM サーチにだけ対応するもので、これでも「ナンプレ160問」では143問、、「ニコリ数独名品100選」では51問を解くことができました。
登録:
投稿 (Atom)