指定された問題の解析
指定された問題を check
コマンドに続いて問題の局面を入れることでチェックすることができる。局面は数字を連続して入れることで表現する。空白のマスは0とする。例えば、この図面は
次のように表現できる。
310002000000860200008003075007098350090000080053620400630200900009036000000100063
オンラインでナンプレ問題集を解いているのであれば、キーボードからc
と入力することで、現局面がクリップボードにコピーされる。その局面は check pos [verb]
コマンドでチェックすることができる。ここで pos は局面で verb は冗長性レベル(省略時は 1)である。
check pos
はその局面が唯一解を持つかどうかを表示する。check pos 2
は基本解法 (naked single と hidden single) のヒントを表示する。check pos 3
はあるセルが決定するまでの上級解法のヒントを表示する。check pos 4
はあるセルが決定するまでの手順を表示する。
kaidoku-1.0.1> check 310002000000860200008003075007098350090000080053620400630200900009036000000100063
This position has a unique solution.
kaidoku-1.0.1> check 310002000000860200008003075007098350090000080053620400630200900009036000000100063 2
Look at R4C4. What number is available?
solve
コマンドによってその問題を解くための手順がすべて表示される。このコマンドの使い方は
solve pos [verb]
であり、
solve pos
は難易度レベルのみを表示する。solve pos 2
は探索のヒントを表示する。solve pos 3
は探索の結果と上級解法のヒントを表示する。solve pos 4
はすべての解法を表示する。solve pos 5
はすべての解法と図面を表示する。
図面を表現する他の方法
- 数字を列ごとにコンマ
,
で区切ることができる。この場合は、コンマの間に9個の数字がなければならない。 - 0 は - のような他のアスキー文字に変えることができる。
したがって、次のようなコマンドが可能となる。
kaidoku-1.0.1> solve 31---2---,---86-2--,--8--3-75,--7-9835-,-9-----8-,-5362-4--,63-2--9--,--9-36---,---1---63
印刷物から図面を入力するときには、入力ミスをしたときにどの列が間違えているのかが表示されるため、この方法は便利である。たとえば、このように入力すると
kaidoku-1.0.1> solve 31---2---,---86-2--,--8--3-75,--7-9835-,-9----8-,-5362-4--,63-2--9--,--9-36---,---1---63
このようなメッセージが得られる。
Error in input: -9----8-
この行をチェックすれば、この行にマス目が8個しかないことがわかる。また、このように入力すると
kaidoku-1.0.1> solve 31---2---,---86-2--,--8--3-75,--7-9835-,-8-----8-,-5362-4--,63-2--9--,--9-36---,---1---63
このようなメッセージが得られる。
Both R5C2 and R5C8 have the same value of 8.
つまり、R5C2 と R5C に同じ8という数字が入っている。
有効な問題かどうかのチェック
数独・ナンプレの問題は解が唯一であるときのみ有効である。解が複数存在するときには、無効な問題であることが示される。たとえば、このように入力すると
kaidoku-1.0.1> solve -4-3---9-,---------,-----4236,7924--3--,----8----,--1--3627,1385-----,--------4,-7---9-6-
このようなメッセージが得られる。これは「複数の解がある無効な問題である」という意味である。
Invalid sudoku with multiple solutions.
もしある問題が有効であるかどうかだけをチェックしたいのであれば check
コマンドを使ってこのように入力することもできる。
kaidoku-1.0.1> check -4-3---9-,---------,-----4236,7924--3--,----8----,--1--3627,1385-----,--------4,-7---9-6-
もしどのような複数解があるのかを見たければ、solve pos 5
とする。たとえば、このようにする。
kaidoku-1.0.1> solve -4-3---9-,---------,-----4236,7924--3--,----8----,--1--3627,1385-----,--------4,-7---9-6- 5
このようにすると、2つの解とその2つの解で共通する数字が最後に示される。解独では解を2つ見つけるとそれ以上の探索はしないため、実際には3つ以上の解が存在している可能性がある。もし解が存在しなければ、たとえば
kaidoku-1.0.1> solve -4-3---9-,---------,-----4236,7924--3--,4---8----,--1--3627,1385-----,--------4,-7---9-6-
とすることで、最後に
Invalid sudoku with no solution.
すなわち「解が存在しない無効な数独である」と表示される。なぜ解が存在しないのかを見るためにはsolve pos 5
を使う。
例
数独の最難問を解析する。PCの性能にもよるが、解析には数秒かかる。
kaidoku-1.0.1> solve 8--------,--36-----,-7--9-2--,-5---7---,----457--,---1---3-,--1----68,--85---1-,-9----4-- 2
Search with depth 3 from R8C7.
Search with depth 3 from R7C7.
Search with depth 2 from R7C5.
Search with depth 3 from R8C9.
Search with depth 3 from R9C4.
Search with depth 1 from R6C7.
Search with depth 2 from R1C7.
Valid sudoku with unique solution of level 9 (ultimate).
いかに深い探索がなされているかが分かる。完全な解法を見るには、このようにする。
kaidoku-1.0.1> solve 8--------,--36-----,-7--9-2--,-5---7---,----457--,---1---3-,--1----68,--85---1-,-9----4-- 5
結果はこのようになる。