見出し画像

難しい数独を早く解きたい

この記事はペンシルパズル Advent Calendar 2023の7日目の記事です。

こんばんは。初月葉桜です。少し前からニコリさんが出している『超激辛数独1』を解いて、難しい数独(協議パズルの文脈だとHard Classicと呼ばれたりもする)を解く練習をしています。今回は、それらを解いているときに感じたことを言語化してみようと思います。読む人によっては当たり前だと認識しているような要素ももしかするとあるかもしれませんが、いろいろ書いてみようと思うのでよろしくお願いします。
なお、個別の問題のネタバレにはならないように書いているので、まだ該当の本を解いていないという人でも読めるようになっていると思います。
また、手筋の名前については、ナンプレのソルバー・生成ツールのHoDoKuの手筋一覧で使われている名前を用いて書いています。

Hidden PairとNaked Pairの違い

Hidden Pairは、同じブロック・行・列の中である2種類の数字の入る場所が2マスしかないとき、その2マスに他の種類の数字が入らないという手筋で、ニコリでは「予約」として解説されています。3種類以上の数字に対しても拡張ができ、難しめの問題ではよく登場します。

Hidden Pairの例
左上のブロックで3と4が入るマスはどちらも同じ2か所しかない

一方、Naked Pairは、同じブロック・行・列に対して、その中のある2マスに入る数字が2種類しかないとき、それらの数字は他のマスに入らないというものです。これも3マス以上に対しても拡張して使うことができます。

Naked Pairの例
左上のブロックで、8か9しか入らないマスが2か所ある

さて、今まで自分はこの2つの手筋を割と区別せずに使っていました。というのも、見た目上はどちらも「ある2種類の候補数字が2か所に入っている」となっているからです。ただ、難しい問題を解く際にこれらの違いを意識すると、少し解きやすくなった気がするので、それについて以下に書きます。

Hidden Pairでは、「ある2種類の数字がある2マスしか入りえないから、そこに他の数字は入らない」というものなので、注目しているブロック・行・列に対して「他の数字」の入る位置を探ることで次の一手が見つかる可能性があります。逆に、2種類の数字についてそのあと追いかける必要はない、とも言えます。
一方Naked Pairでは、「ある2マスにある2種類の数字しか入りえないから、他のマスにそれらの数字は入らない」というものなので、注目しているブロック・行・列の「他のマス」の候補数字を見てみると、先に進める可能性があります。逆に、「このブロック・列・行でこの数字はどこに入るか」を考える必要はなくなります。

手筋の理屈を理解しておくと、次にやるべきことがはっきりして、それが作者の意図になっていることもあるので、スムーズに解き進める助けになるように思います。

新しい情報だけを追いかける

候補数字が減ったり、数字が埋まったりした時に、連鎖して進んでいくことがあります。その時、追いかけなくても良いところは追いかけないようにすることで、時間の短縮になるほか、追いかけるべきところを見落としにくくなると思っています。
先ほどのHidden PairやNaked Pairで書いたこと以外だと、例えば、次のような場面が当てはまります。一番左の列で3と4の入る位置が2か所に絞られている状態から、3と4の位置が確定したとします。すると、緑のマスはすでに3と4の位置にかかわらず候補が決まっているので、緑のマスについては無視して、「赤いマスに3が入らない」「紫のマスに4が入らない」という情報だけを見て進めれば良いことになります。

注意事項としては、「緑のマスに3と4が入らない」という情報をすでに使っていることが前提になるため、候補数字の確認忘れなどがあると上のような追いかけ方では不十分だということです。とはいえ、確認忘れ・見落としがあると進まないことがあるのは常にそうなので、そこは気を付けていくしかないでしょう。(自分もニコリでいう「ブロッケン」を見落として詰まることがたまにあります)

X-Wingの探し方

次は若干実用性には欠ける話です。
ナンプレの上級手筋にX-Wingというものがあります。ニコリでは「井桁理論」として紹介されています。Hidden PairやNaked Pairよりも難しい手筋として紹介されることが多いです。個人的な印象としても、ブロック・行・列だけ見れば良いHidden Pairや候補数字をメモすることで見つかるNaked Pairに比べて、盤面全体を見て探さないといけないX-Wingは見つけにくい手筋だという認識です。
具体例を用いて手筋を簡単に紹介します。
下の図で、一番左の列と一番右の列では、9の入りうる位置がそれぞれ上から3行目と7行目となっています。この時、他の列の3行目と7行目(緑色のマス)には、9が入らない、というのがX-Wingの考え方です。

さて、X-Wingを探すとき、ある行・列である数字が2か所にしか入りえないようなとき、それを使ったX-Wingがないかどうかをチェックするのですが、やはり探すのはまだ大変です。そこで、「ある数字に対してX-Wingを使える場所がない」ということを確かめる方法があります。それは、「ある数字がまだ入っていないブロックの位置に注目した時、長方形の位置関係にある4つのブロックがなければX-Wingを探さなくて良い」というものです。
9に対してX-Wingが使える場面を以下に2つ示していますが、いずれも9の入りうる4つのマスはそれぞれ異なるブロックにあります。そして、その4つのブロックは長方形の位置関係にあります。したがって、「9がまだ入っていないブロックで、長方形の位置関係にあるような4つがない時、9のX-wingは使えない(=探さなくて良い)」ということも言えます。

赤が9の入りうるマス、緑はX-Wingによって9が入らないと決まったマス

これを頭の片隅に入れておくと、X-Wingを探す時に少し時間短縮になるかもしれません。(現状ではすごく役立っているということもないのですが)
なお、下図のような場面も起こりえますが、これはLocked Candidatesという手筋(ニコリでいう「いずれにしても理論」の応用)でも解決できるので、今回はX-Wingとして考慮していません。

赤が9の入りうるマス、緑は9が入らないと決まったマス

ざっくりまとめ

というわけでいろいろと書いてみましたが、書いてないことも含めて大まかには「見なくていい場所は見ない」「新しく得た情報は漏れなく使う」というのが、作者の想定している道をたどることにもつながり、難しい問題を解く際のコツなのかなと思っています。
もともと問題を解いている際に感じたぼんやりとした内容を文字にしたのであいまいな感じの記事だったかもしれませんが、最後まで読んでいただきありがとうございました!

※「数独」は(株)ニコリの登録商標です。

この記事が気に入ったらサポートをしてみませんか?