1.どういう解法?
まず、皆さんへご注意を1つ。
SK Loop という解法は、異常なまでに複雑でややこしい解法です。
当サイトでは Bent Naked Subset を解説しましたが、SK Loop は「Bent Naked Subset の拡張版」といったところでしょうか。
Bent Naked Subset はマスがL字型に点在しているけれど、マスが増えて「L」の両端が伸びてくっついて環状になっちゃった。
そんな感じ。
Bent Naked Subset の延長線上にあるという意味では、SK Loop も難解と言えます。
理解に時間がかかってもOKです。気長に読んで理解していってください😊
……いや、ブラウザバックするなら今のうちですよ!
まずはシチュエーションから説明しましょう。
SK Loop の対象となるマスを紹介します。
- 矩形状に並んだ4つのブロック(黄色)がある。
- 数字の確定している4マス(緑色)が黄色ブロックそれぞれに存在し、さらに、その4マスは矩形状に並んでいる。
- SK Loop の対象となるのは、黄色ブロック内部にあり、緑色マスと同じタテ列・ヨコ列に属するマス。
ざっくり言うと、SK Loop に必要なのは緑色近辺のマスです。
候補数字を丸数字で示した16マス。
見た感じ、2マスずつ隣り合わせに並んでますよね。
ペアは8組。
その8組を枠でくくって、時計回りにA〜Hとしておきましょう。
実は、この8枠内部の候補数字には大きな秘密が隠れています。
それは一体何か?
左上ブロックから時計回りに候補数字を見てみると……、
- 候補数字57は枠A, Bにしかない。
- 候補数字16は枠B, Cにしかない。
- 候補数字48は枠C, Dにしかない。
- 候補数字39は枠D, Eにしかない。
- 候補数字57は枠E, Fにしかない。
- 候補数字29は枠F, Gにしかない。
- 候補数字48は枠G, Hにしかない。
- 候補数字26は枠H, Aにしかない。
こういう特徴があるんですね。
8つも書いちゃったけど、一言で言うとこういうことです。
どの候補数字も、ただ1個の列またはただ1個のブロックにしか存在しない。
例えば、1も6もヨコ1列にしか存在していません。
他も同様です。
さて、この状態からどういう結論が得られるんでしょう?
こうなります。
- 2枠を共有する列やブロックにおいて、枠外のマスから該当の候補数字をすべて除去できる。
結論成立後の盤面が 図1-3 です。
あっちこっちで候補数字が除去されとる😓
結論がわかりにくいので、具体例を2つ。
2枠B, Cともに候補数字1, 6がありますね。
実は、青色ヨコ列において、数字1と6の入る可能性は2枠B, Cに限定されてしまうのです。枠外のマスから候補数字1, 6をすべて除去できます(青色×印)。
左下ブロックにおいて、数字4と8の入る可能性は枠G, Hに限定されることになる。枠外のマスから候補数字4, 8をすべて除去できます(薄紫色×印)。
なぜこういう結論になるんだろう?
それは、前図1-2 の候補数字達は枠A〜Hのどこかに必ず1個ずつ入ることになるからです。
それを解説しましょう。
8枠A〜Hは全部で16マスありますね。
そして、枠内にある候補数字は5716483957294826の全16種類。
16と16で同数。
実は、同数というところがミソなんです。
枠内16マスに数字を入れることを考えてみましょう。
とりあえず、次のことは成り立ちます。
- 全16種類のどの数字も、枠A〜Hには1個までしか入れることができない。
例えば、候補数字5は左上ブロックにしかありません。
ということは、枠A, B内のどこかに数字5を入れることは可能だけど、2個以上は入れられない。
数字5は最大1カ所にしか入れられません。
また、候補数字1はヨコ1列にしかありません。
枠B, C内のどこか1マスに数字1を入れることは可能だけど、最大1カ所にしか入れられません。
他も同様で、最大1カ所です。
というわけで、全16種類のどの数字も1個までなら入れることが可能です。
「1個まで」です。
「1個まで」ということは、一応「0個」の可能性も残っているわけですよね。
はて、「0個」って……あり得るんだろうか?
実は、0個はあり得ません。
なぜなら、破綻を引き起こすから。
例えば、候補数字5が全滅したと仮定しましょう。
すると、残り15種類の候補数字を使って16マスを埋め尽くさないといけなくなります。
しかし、それは不可能なんです。
どの候補数字も1個までしか採用できない。
どんなに頑張っても、15種類の数字では最大15マスまでしか埋められない。
図1-5 のように、16個目のマスに入れる数字が無い!
というわけで、どの数字も0個はあり得ません。
で、こうなるんです。
- 全16種類の数字は、8枠16マスにそれぞれ1個ずつ入る。
16種類の数字が8枠A〜Hに1個ずつ入る。
言い換えると、これが成り立つことになるんです。
- 全16種類の数字は、必ず8枠16マスのどこかに入る。
これが判明したのはすっごく大きい!
このおかげで、数字の入れられないマスが発生するんです。
例えば、候補数字5は枠A, B内部にありますね。
数字5はこの4マス(実質は2マス)のどこかに必ず入るのです。
ということは、左上ブロックにおいて、枠A, B外部のマスに数字5は入れられなくなりました。
候補数字7も理屈は同じです(灰色×印)。
候補数字16は枠B, C内部にありますね。
同様にして、青色ヨコ列では候補数字1, 6が除去されます(青色×印)。
他の色の候補数字も同様、除去が生じます(黒色×印)。
除去された候補数字は…… 全部で13個!
凄まじい!
2.一般にはどういう原理なのか?
前セクションでは、「候補数字は全16種類」と述べました。
しかし、現実は数字が9種類しかないから、どうしても数字がダブっちゃうんですよねぇ😞
同じ候補数字があちこち散らばっていて、説明がわかりにくかったかもしれません。
そこで、このセクションでは、SK Loop が機能する原理を説明していきます。
まぁ、前セクションと話はだいたい同じです😅
前セクションと同じ8枠A〜Hで説明しましょう。
この8枠内部における候補数字の分布は 図2-1 の通りです。
ここでは文字a〜rで表すことにしましょう。
どのマスも候補数字は4つしかありません。
★マスには既に数字が確定しているものとします。
実際はa〜rは候補数字1〜9のどれかを表すわけですが、どの文字がどの数字なのかを考える必要はありません。
具体的な数字が何であれ、以下の論理展開にはまったく影響ありません。
ただし、同色の2種は必ず数字が異なります。
そこだけは注意しておきましょう。
さて、この候補数字たちの分布を説明しましょう。
こういう形になっています。
- 候補数字abは枠A, Bにしかない。
- 候補数字cdは枠B, Cにしかない。
- 候補数字efは枠C, Dにしかない。
- 候補数字ghは枠D, Eにしかない。
- 候補数字jkは枠E, Fにしかない。
- 候補数字mnは枠F, Gにしかない。
- 候補数字opは枠G, Hにしかない。
- 候補数字qrは枠H, Aにしかない。
上記の説明をまとめると、候補数字の分布に関して大きな特徴が1つあります。
その特徴とは……、
どの候補数字も、ただ1個の列またはただ1個のブロックにしか存在しない。
8枠A〜Hは全部で16マスありますね。
そして、枠内にある候補数字はabcdefghjkmnopqrの全16種類。
16と16で同数ですね。
この「同数」はすっごく大事!
これにも注意しておきましょう。
枠内16マスに数字a〜rを入れることを考えてみます。
とりあえず、こういうことが言えます。
- どの数字a〜rも、枠A〜Hには1個までしか入れられない。
例えば、候補数字aは左上ブロックにしか存在しません。
だから、枠A, B内のどこか1マスに数字aを入れることは可能だけど、1カ所に入れたらもぅ終わり。
数字aは最大1カ所にしか入れられません。
候補数字cも同様ですね。ヨコ1列にしか存在しない。
枠B, C内のどこか1マスに数字cを入れることは可能だけど、1カ所に入れたらもぅ終わり。
数字cは最大1カ所にしか入れられません。
他の候補数字も同様ですね。
どの数字も1個までなら入れることが可能です。
「1個まで」です。
「1個まで」ということは、「0個」の可能性も一応あるわけですね。
では、実際には0個はあり得るんだろうか?
実は、あり得ません。
破綻してしまうからです。
例えば、候補数字aが全滅したと仮定しましょう。
すると、残り15種類の候補数字を使って16マスを埋め尽くさないといけなくなります。
しかし、どの候補数字も最大1マスまでしか採用できないのだから、これは不可能なんですね。
15種類すべて採用されたとしても、最後の1マスを埋めることがどうしてもできない😵
というわけで、どの数字も0個はあり得ない。
よって、こうなるわけです。
- 全16種類の数字は、8枠16マスにそれぞれ1個ずつ入る。
各数字の入る場所は決まらないけれど、「1個ずつ入る」は確定するんです。
候補数字a〜rは8枠A〜Hに1個ずつ入る。
これを言い換えると、こうなります。
- 数字a〜rは、必ず8枠16マスのどこかに入る。
このおかげで、候補数字が大量除去されていく。
図2-5 の通りです。
例えば、数字a, bは2枠A, Bのどこかに必ず入るから、灰色4マスから候補数字a, bを除去できます。
数字q, rは2枠A, Hのどこかに必ず入るから、黄色3マスから候補数字q, rを除去できます。
なんと、理論上は 56個もの大量除去が可能!
そう考えると、SK Loop とはどれほど強烈な解法か。
まぁ、56個とまではいかずとも、この8枠16マスがn国同盟さながらの挙動を見せるのは面白いですよね。
まさに16国同盟だ!
こんな巨大な同盟、一生に一度拝めるかどうか。
一般的な話をすると、次の2つの条件を満たしていれば SK Loop と同じ理屈が使えます。
- n個のマスの中に候補数字が全n種類ある。
- その全n種類のどの候補数字も1列または1ブロックにしか存在しない。
この手法は、当サイトの Bent Naked Subset や Sue De Coq の一般化 にも用いています。
超マニアックなナンプレを解く時には使えるかもしれません。
3.こんなパターンもある
実は、SK Loop にはさまざまなパターンがあります。
それをちょいとご紹介。
3-1.3個と1個に分かれちゃった!
今までは、各色の候補数字が2個ずつ分かれていたパターンでした。
今度は、3個と1個に分かれたパターンを紹介しましょう。
図3-1、今度もA〜Hの8枠に候補数字が並んでますね。
ただ、候補数字の分布がセクション1とは違います。
- 候補数字378は枠A, Bにしかない。
- 候補数字1は枠B, Cにしかない。
- 候補数字356は枠C, Dにしかない。
- 候補数字4は枠D, Eにしかない。
- 候補数字678は枠E, Fにしかない。
- 候補数字2は枠F, Gにしかない。
- 候補数字356は枠G, Hにしかない。
- 候補数字9は枠H, Aにしかない。
候補数字が3:1に分かれた形をしてますね。
でも、この場合も状況は同じだったりする。
どの候補数字も、ただ1個の列またはただ1個のブロックにしか存在しない。
図3-1 のパターンも、8枠A〜Hのマスは全部で16個ありますね。
そして、枠内にある候補数字は3781356467823569の全16種類。
16と16で同数です。
引き続き、同数であることに注意してください。
さぁ、結論です。
- 2枠を共有する列やブロックにおいて、枠外のマスから該当の候補数字をすべて除去できる。
図3-2 だと、×印のマスが該当します。
例えば、枠D, Eの属する右端タテ列では、候補数字4が除去されます。
枠G, Hの属する左下ブロックでは、候補数字3, 5, 6の除去が発生します(残念ながら候補数字5は効果がなかった)。
理由はまったく同じです。
全16種類の候補数字は、すべて8枠A〜Hのどこかに必ず1個ずつ入ることになるからですね。
3-2.マスが少なくなっちゃった!
今までは、マスが16個の場合を解説しました。
実は、マスが少なくなっても SK Loop は使えるんです。
図3-3、今度は枠内に数字が確定して、マスがちょびっと少なくなりました。
マスは全部で13個。
候補数字の分布はどうなっているでしょう?
- 候補数字8は枠A, Bにしかない。
- 候補数字34は枠B, Cにしかない。
- 候補数字7は枠C, Dにしかない。
- 候補数字34は枠D, Eにしかない。
- 候補数字79は枠E, Fにしかない。
- 候補数字23は枠F, Gにしかない。
- 候補数字7は枠G, Hにしかない。
- 候補数字26は枠H, Aにしかない。
枠によって候補数字が1種類だったり2種類だったり。
でも、このパターンも状況は同じです。
どの候補数字も、ただ1個の列またはただ1個のブロックにしか存在しない。
今回のパターンは、8枠A〜Hの空きマスは全部で13個。
そして、枠内にある候補数字は8347347923726の全13種類。
13と13で同数です。
引き続き、同数であることに注意してください。
この場合もやっぱり結論は同じです。
こうなります。
- 2枠を共有する列やブロックにおいて、枠外のマスから該当の候補数字をすべて除去できる。
図3-4 だと、×印のマスが該当します。
理由はまったく同じです。
全13種類の候補数字は、すべて8枠A〜Hのどこかに必ず1個ずつ入ることになるからですね。
4.難解なこの解法を生んだのは、まさしく難解な問題だった
ここからは余談です。
……が、途中から話が難しくなるので、ご注意ください😓
この解法が生まれたキッカケとされている、「Easter Monster」という名前のナンプレを紹介しましょう。
図4-1、これが Easter Monster です。
これは、フォーラムサイト『The New Sudoku Players' Forum』の How regular is to generate sudoku with difficulty 9+ SE? というトピックのレス記事で紹介されたものです。
海外のナンプレ解説サイトをいくつか見てみると、Easter Monster を解く試みの中で解法 SK Loop は発見されたとの説明がありました。
この Easter Monster、実は驚異の難易度を誇ります。
おそらく、この盤面からは一歩も進めないでしょう。
世に出回っているナンプレソフトで軽く確かめてみたけれど、ホントに1マスも埋まらん😅
n国同盟や Fish 系はおろか、リンクや ALS などの高難度な解法でさえ1マス埋めることが叶わない。
超マニアックな解法でやっとマスが埋まるかもしれません。
まさに "Monster" なナンプレなんです。
ここで出番となるのが SK Loop なんですね。
使用する8枠16マスは 図4-2 の通り。
枠は3マスを囲っていますが、ヒント数字は無視しちゃってください。
2マス1組の枠です。
候補数字の内訳は……、
- 候補数字2, 7 は枠A, Bにしかない。(灰色)
- 候補数字4, 8 は枠B, Cにしかない。(黄色)
- 候補数字1, 6 は枠C, Dにしかない。(紫色)
- 候補数字4, 5 は枠D, Eにしかない。(緑色)
- 候補数字2, 7 は枠E, Fにしかない。(水色)
- 候補数字3, 9 は枠F, Gにしかない。(赤色)
- 候補数字1, 6 は枠G, Hにしかない。(オレンジ色)
- 候補数字3, 8 は枠H, Aにしかない。(青色)
マスは16個、候補数字は全16種類。
これはもぅ、SK Loop 先生にお願いしなきゃ!
先生は13個も候補数字を消し去ってくれます😊
- 盤面から13個の候補数字を除去できる(図4-2 ×印)。
ちなみに、『SK Loop』の名の由来は Steve Kurzhals 氏です。
『The New Sudoku Players' Forum』のさまざまな関連トピックを見ると、Easter Monster の解き方を Steve Kurzhals 氏が発見したという投稿コメントが散見されます。
このレス投稿によると氏の解法は SK Loop とは形が若干異なりますが、氏による大発見は画期的なものだったということでしょう。
さて、ここからは話を変えて、高難度な話をしていきます。
Nice Loop(連続ループ)の知識を持っていると良し。
ナンプレの解き方をマニアの方々が論じる時、eureka notation という表記法が多く用いられます。
実は、強いリンク/弱いリンク という概念は汎用性が高く、ナンプレマニア達はリンクをかなり好むんです。
『The New Sudoku Players' Forum』や個人サイトでも eureka notation が頻繁に現れ、リンクがすごく重宝されていることがよくわかります。
そこで、Nice Loop(連続ループ)に似た視点で SK Loop を捉えてみようと考えた。
こういう次第です。
リンクを多用するマニアが陥りやすい落とし穴、その話をしてみます。
リンク、そして、グルッと一周する。
これを聞いて Nice Loop を思い浮かべた方々はもぅ十分ナンプレマニアです😃
たしかに、その解法に目を付けたのは鋭いんです。
実際、「枠Aに3と8は入らない」という仮定の下で反時計回りに論理展開すると、次の手順で矛盾なく一周できます。
- 枠Aから3と8が除去される。
- 枠Aには2と7が入る。
- 枠Bから2と7が除去され、4と8の2国同盟が発生する。
- 枠Cから4と8が除去され、1と6が入る。
- 枠Dから1と6が除去され、4と5の2国同盟が発生する。
- 枠Eから4と5が除去され、2と7が入る。
- 枠Fから2と7が除去され、3と9の2国同盟が発生する。
- 枠Gから3と9が除去され、1と6が入る。
- 枠Hから1と6が除去され、3と8の2国同盟が発生する。
- 1. に戻る。
そして、枠Aに入らなかった数字3, 8は必ず枠Hに入るから、3と8の入り得る場所は枠A, Hに限定され……と青色×印が付く。
上記の手順は循環できるから、どの枠から始めても反時計回りに論理展開できる。これにより、黒色の×印も付く。
これで 図4-2 の結論は無事証明されたね!
……とまぁ、こういうシナリオが頭に浮かぶわけです。
ところが!
残念ながら、このシナリオには大きな穴がある😞
というのも、枠Aの数字の入り方は「3も8も入らない」「3も8も入る」の2通りだけではないからです。
「3と8の片方だけ入る」という第三の入り方もあるんです。
ここで、ちょいとリンクのおさらい。
本来、リンクは単独の候補数字を数珠つなぎにして使います。
そして、「チェーン先頭の候補数字が真であっても偽であっても必ず○○は成り立つよ!」という理屈で、その「○○」を結論としているわけですね。
X-Chain も XY-Chain も Alternate Inference Chain もそうやって結論を導いています。
Nice Loop(不連続ループ)などの例外はあるけれど、基本は「真であっても偽であっても論」で展開していくんです。
しかし、今回はその「真であっても偽であっても論」は使えません。
だって、第三の選択肢が現れちゃったんだもの😞
今回は「次の a. b. c. のどの場合でも必ず 図4-2 は成り立つよ!」と言わなければいけないんですね。
- 枠Aには3も8も入らない。
- 枠Aに3と8の両方が入る。
- 枠Aに3と8の片方だけが入る。
形が Nice Loop の応用っぽく見えるから、それをチャチャッと適用して SK Loop を理解できたと勘違いしがち。
勘違いしたままでは正しく理解できようはずもありません。
安易な理解で済ませず、些細な疑問もしっかり解消していく。そういう姿勢は大事です。
わかった気になっている時が一番危ない。
気をつけましょう!
……ていうか、私がやっちゃったよ😅 この勘違い😅
では、気を取り直して。
a. b. c. のどの場合でも 図4-2 の結論に行き着くのかどうか、検証してみましょう。
まずは、《a. 枠Aには3も8も入らない》場合。
これは 前図4-3 がそのまま検証結果になりますね。
次に、《b. 枠Aに3と8の両方が入る》場合。
これは、時計回りに論理展開するとOKです。
- 枠Aに3と8が入る。
- 2国同盟により枠Hから3, 8が除去される。
- 枠Hに1と6が入り、枠Gから1, 6が除去される。
- 枠Gに3と9の2国同盟が発生、枠Fから3, 9が除去される。
- 枠Fに2と7が入り、枠Eから2, 7が除去される。
- 枠Eに4と5の2国同盟が発生、枠Dから4, 5が除去される。
- 枠Dに1と6が入り、枠Cから1, 6が除去される。
- 枠Cに4と8の2国同盟が発生、枠Bから4, 8が除去される。
- 枠Bに2と7が入り、枠Aから2, 7が除去される。
- 1. に戻る。
結果は 図4-4 の通りです。
手順は循環するため、「数字3も8も枠Hに入らなかった時、両者とも必ず枠Aに入る」と言えます。
この場合も青色×印が付くんですね。
黒色×印も同様です。
最後は《c. 枠Aに3と8の片方だけ入る》の場合です。
この場合はちょっぴりトリッキーな方法で説明しましょう。
a. b. のパターンはそれぞれ 図4-3・図4-4 で示しました。
枠内の数字の色を見てみると、わかりやすい特徴がありますね!
そう、どの枠も同色なんです。
枠Aから論理展開を始めたら、どの枠も同色の数字が収まったんですね。しかも、a. b. どちらも手順は循環するのだから、どの枠から始めても同じ結果に至ります。
そう考えると、実はこんなことが成り立つんです。
- ある枠に同色の数字が入った時点で、必ずどの枠もそれぞれ同色の数字で埋まることになる。
それを踏まえて、c. の場合を考えましょう。
c. は「枠Aに異なる色の数字を入れる」ことと同じです。
さて、この場合、他の枠に同色の数字を入れることは可能でしょうか?
答えは「不可能」です。
なぜなら、ある枠に同色の数字が入ってしまうと、枠Aも同色でなきゃいけなくなっちゃう!
矛盾が起きてしまうのです😵
よって、すべての枠には異なる色の数字が入ります。
色の配分は 図4-5 のようなイメージになる。
ここで、ちょいと枠AとHを見てみましょう。
すると……枠は違えど2個の青色数字が入っちゃってるんですね。
結局、c. の場合も数字3, 8の入り得る場所は枠A, Hに限定されることになる。
a. b. と同様の候補数字除去が起こるんです(青色×印)。
他の2枠を見れば、同様にして黒色×印も付きます。
これも、a. b. と同様の候補数字除去ですね。
a. b. c. のどの場合も 図4-2 とまったく同じ結論に至りました。
というわけで、図4-2 が最終結論です。
SK Loop を使った場合と同じ結論になりました😊
参考・参照
- The New Sudoku Players' Forum, 『How regular is to generate sudoku with difficulty 9+ SE?』,
http://forum.enjoysudoku.com/how-regular-is-to-generate-sudoku-with-difficulty-9-se-t5336-30.html#p42813 - 教えて!翻訳 Q&A, 『教えて!翻訳Q&A!「Stephen」は「スティーブン」?「ステファン」??』,
https://www.kontecs.com/blog/workblog/2021/09/01/教えて!翻訳q&a!「stephen」は「スティーブン」?「/
更新履歴
- 2022. 8.23.
- 新規公開。
- 2023. 3.31.
- ページ冒頭に難易度表記を追加。