View on GitHub

解独

数独・ナンプレの解析プログラム

高度な解法のヒントを見る

高度な解法のヒント

例としてレベル5の問題を取り上げる。l 5とすることで、レベル 5 の 1 番目が選ばれる。

kaidoku-1.0.1> l 5
Level 5 No. 1

この問題を基本解法だけで解き進めると、この場面でこれ以上何もできなくなる。

ここで i コマンドによって次のようなヒントを得ることができる。

kaidoku-1.0.1> i
Think candidates of the cells.
See image by "html".
For more hints, type ii.

「マスの候補を考えてください。画像は “html” で見ることができる。さらにヒントを見るには、ii と入力してください。」という意味である。このメッセージについては簡単に触れた。これは、基本解法ではこれ以上なにもできないことを意味している。ここで、画像ファイルが次のようにアップデートされている。

それぞれのマスの候補が自動的に書かれるので、どの解法を使えば解けるのかを考えることができる。さらにヒントが必要であれば、iiと入力することで次のようなメッセージを得る。

kaidoku-1.0.1> ii
Following logics are successively used.
Pointing pair
Pointing pair
See full explanation by typing iii.

どの解法を使えば良いのかが順番に示される。このヒントの意味は、pointing pair を2回連続して使うことで、あるセルが決まるということである。

どのように解法を使うのかを知りたければ、iiiと入力することで、次のような説明を見ることができる。

kaidoku-1.0.1> iii
Pointing pair in box 1 removed 5 from R9C3 R7C3 
Pointing pair in box 8 removed 5 from R8C4 (=7) R9C5 

ボックス1に 5 の pointing pair があり(R1C3 と R2C3)、R9C3 と R7C3 から 5 が消される。それから、ボックス8に 5 の pointing pair があり(R7C5 と R7C6)、R8C4 と R9C5 から 5 が消される。R8C4 から 5 が消されると、R8C4 は 7 に決まる。これで、847と進めることができる。ここから先は、この問題は基本解法のみで解くことができる。

部分的に解く

問題を全部解くのではなく、上級解法の解析のみに集中したいときがある。そのようなときには、上級解法が使われる場面にすぐに行きたいと思うであろう。上記の図面から、initial コマンドで初期配置に戻ってから、「部分的に解く (solve partially)」コマンド sp を使うと、次のようになる。

kaidoku-1.0.1> sp
Naked single: R4C4 = 4
Naked single: R3C4 = 9
Hidden single in box 1 : R2C1 = 9
Hidden single in box 1 : R2C2 = 7
Hidden single in box 3 : R2C8 = 3
Hidden single in box 4 : R6C1 = 8
Hidden single in box 5 : R5C4 = 3
Hidden single in box 8 : R9C6 = 9
Hidden single in column 8 : R8C8 = 2

基本解法の naked single と hidden single が使える間は使い続けて、上級解法が必要とされる場面まで進む。ここでiコマンドまたはjmコマンドを使うことで、候補の図を見ることができる。