【解法】SK Loop

 SK Loop は、ブロック4個・タテ2列・ヨコ2列に属する16個のマスが連携し合う解法です。
 マス16個と候補数字16個がタッグを組んで、あちこちのマスから候補数字を大量除去できるというシロモノ!
 ただし、とてつもなく難解です。
 「俺は SK Loop がないと生きていけないんだッ!!!」という方々だけご覧ください。
 Bent Naked Subset を知っていると SK Loop を理解しやすいかもしれません。
 (難易度:★★★★★)

1.どういう解法?

 まず、皆さんへご注意を1つ。

SK Loop という解法は、異常なまでに複雑でややこしい解法です。

 当サイトでは Bent Naked Subset を解説しましたが、SK Loop は「Bent Naked Subset の拡張版」といったところでしょうか。
 Bent Naked Subset はマスがL字型に点在しているけれど、マスが増えて「L」の両端が伸びてくっついて環状になっちゃった。
 そんな感じ。
 Bent Naked Subset の延長線上にあるという意味では、SK Loop も難解と言えます。
 理解に時間がかかってもOKです。気長に読んで理解していってください😊

 ……いや、ブラウザバックするなら今のうちですよ!

図 1-1

 まずはシチュエーションから説明しましょう。
 SK Loop の対象となるマスを紹介します。

  • 矩形状に並んだ4つのブロック(黄色)がある。
  • 数字の確定している4マス(緑色)が黄色ブロックそれぞれに存在し、さらに、その4マスは矩形状に並んでいる。
  • SK Loop の対象となるのは、黄色ブロック内部にあり、緑色マスと同じタテ列・ヨコ列に属するマス。

 ざっくり言うと、SK Loop に必要なのは緑色近辺のマスです。
 候補数字を丸数字で示した16マス。
 見た感じ、2マスずつ隣り合わせに並んでますよね。
 ペアは8組。

図 1-2

 その8組を枠でくくって、時計回りにA〜Hとしておきましょう。
 実は、この8枠内部の候補数字には大きな秘密が隠れています。
 それは一体何か?
 左上ブロックから時計回りに候補数字を見てみると……、

  • 候補数字は枠A, Bにしかない。
  • 候補数字は枠B, Cにしかない。
  • 候補数字は枠C, Dにしかない。
  • 候補数字は枠D, Eにしかない。
  • 候補数字は枠E, Fにしかない。
  • 候補数字は枠F, Gにしかない。
  • 候補数字は枠G, Hにしかない。
  • 候補数字は枠H, Aにしかない。

 こういう特徴があるんですね。
 8つも書いちゃったけど、一言で言うとこういうことです。

どの候補数字も、ただ1個の列またはただ1個のブロックにしか存在しない。

 例えば、もヨコ1列にしか存在していません。
 他も同様です。

図 1-3

 さて、この状態からどういう結論が得られるんでしょう?
 こうなります。

  • 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マスありますね。
 そして、枠内にある候補数字はの全16種類。
 16と16で同数。
 実は、同数というところがミソなんです。

図 1-4

 枠内16マスに数字を入れることを考えてみましょう。
 とりあえず、次のことは成り立ちます。

  • 全16種類のどの数字も、枠A〜Hには1個までしか入れることができない。

 例えば、候補数字は左上ブロックにしかありません。
 ということは、枠A, B内のどこかに数字5を入れることは可能だけど、2個以上は入れられない。
 数字5は最大1カ所にしか入れられません。

 また、候補数字はヨコ1列にしかありません。
 枠B, C内のどこか1マスに数字1を入れることは可能だけど、最大1カ所にしか入れられません。

 他も同様で、最大1カ所です。
 というわけで、全16種類のどの数字も1個までなら入れることが可能です。
 「1個まで」です。

図 1-5

 「1個まで」ということは、一応「0個」の可能性も残っているわけですよね。
 はて、「0個」って……あり得るんだろうか?

 実は、0個はあり得ません。
 なぜなら、破綻を引き起こすから。
 例えば、候補数字が全滅したと仮定しましょう。
 すると、残り15種類の候補数字を使って16マスを埋め尽くさないといけなくなります。
 しかし、それは不可能なんです。

 どの候補数字も1個までしか採用できない。
 どんなに頑張っても、15種類の数字では最大15マスまでしか埋められない。
 図1-5 のように、16個目のマスに入れる数字が無い!

 というわけで、どの数字も0個はあり得ません。
 で、こうなるんです。

  • 全16種類の数字は、8枠16マスにそれぞれ1個ずつ入る。
図 1-6

 16種類の数字が8枠A〜Hに1個ずつ入る。
 言い換えると、これが成り立つことになるんです。

  • 全16種類の数字は、必ず8枠16マスのどこかに入る。

 これが判明したのはすっごく大きい!
 このおかげで、数字の入れられないマスが発生するんです。

 例えば、候補数字は枠A, B内部にありますね。
 数字5はこの4マス(実質は2マス)のどこかに必ず入るのです。
 ということは、左上ブロックにおいて、枠A, B外部のマスに数字5は入れられなくなりました。
 候補数字も理屈は同じです(灰色×印)。

 候補数字は枠B, C内部にありますね。
 同様にして、青色ヨコ列では候補数字1, 6が除去されます(青色×印)。
 他の色の候補数字も同様、除去が生じます(黒色×印)。

 除去された候補数字は…… 全部で13個!
 凄まじい!

2.一般にはどういう原理なのか?

 前セクションでは、「候補数字は全16種類」と述べました。
 しかし、現実は数字が9種類しかないから、どうしても数字がダブっちゃうんですよねぇ😞
 同じ候補数字があちこち散らばっていて、説明がわかりにくかったかもしれません。

 そこで、このセクションでは、SK Loop が機能する原理を説明していきます。
 まぁ、前セクションと話はだいたい同じです😅

図 2-1

 前セクションと同じ8枠A〜Hで説明しましょう。
 この8枠内部における候補数字の分布は 図2-1 の通りです。
 ここでは文字a〜rで表すことにしましょう。
 どのマスも候補数字は4つしかありません。
 ★マスには既に数字が確定しているものとします。

 実際はa〜rは候補数字1〜9のどれかを表すわけですが、どの文字がどの数字なのかを考える必要はありません。
 具体的な数字が何であれ、以下の論理展開にはまったく影響ありません。
 ただし、同色の2種は必ず数字が異なります。
 そこだけは注意しておきましょう。

図 2-2

 さて、この候補数字たちの分布を説明しましょう。
 こういう形になっています。

  • 候補数字は枠A, Bにしかない。
  • 候補数字は枠B, Cにしかない。
  • 候補数字は枠C, Dにしかない。
  • 候補数字は枠D, Eにしかない。
  • 候補数字は枠E, Fにしかない。
  • 候補数字は枠F, Gにしかない。
  • 候補数字は枠G, Hにしかない。
  • 候補数字は枠H, Aにしかない。

 上記の説明をまとめると、候補数字の分布に関して大きな特徴が1つあります。
 その特徴とは……、

どの候補数字も、ただ1個の列またはただ1個のブロックにしか存在しない。

 8枠A〜Hは全部で16マスありますね。
 そして、枠内にある候補数字はの全16種類。
 16と16で同数ですね。
 この「同数」はすっごく大事!
 これにも注意しておきましょう。

図 2-3

 枠内16マスに数字a〜rを入れることを考えてみます。
 とりあえず、こういうことが言えます。

  • どの数字a〜rも、枠A〜Hには1個までしか入れられない。

 例えば、候補数字は左上ブロックにしか存在しません。
 だから、枠A, B内のどこか1マスに数字aを入れることは可能だけど、1カ所に入れたらもぅ終わり。
 数字aは最大1カ所にしか入れられません。

 候補数字も同様ですね。ヨコ1列にしか存在しない。
 枠B, C内のどこか1マスに数字cを入れることは可能だけど、1カ所に入れたらもぅ終わり。
 数字cは最大1カ所にしか入れられません。

 他の候補数字も同様ですね。
 どの数字も1個までなら入れることが可能です。
 「1個まで」です。

図 2-4

 「1個まで」ということは、「0個」の可能性も一応あるわけですね。
 では、実際には0個はあり得るんだろうか?

 実は、あり得ません。
 破綻してしまうからです。
 例えば、候補数字が全滅したと仮定しましょう。
 すると、残り15種類の候補数字を使って16マスを埋め尽くさないといけなくなります。

 しかし、どの候補数字も最大1マスまでしか採用できないのだから、これは不可能なんですね。
 15種類すべて採用されたとしても、最後の1マスを埋めることがどうしてもできない😵

 というわけで、どの数字も0個はあり得ない。
 よって、こうなるわけです。

  • 全16種類の数字は、8枠16マスにそれぞれ1個ずつ入る。

 各数字の入る場所は決まらないけれど、「1個ずつ入る」は確定するんです。

図 2-5

 候補数字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 と同じ理屈が使えます。

 この手法は、当サイトの Bent Naked SubsetSue De Coq の一般化 にも用いています。
 超マニアックなナンプレを解く時には使えるかもしれません。

3.こんなパターンもある

 実は、SK Loop にはさまざまなパターンがあります。
 それをちょいとご紹介。

3-1.3個と1個に分かれちゃった!

 今までは、各色の候補数字が2個ずつ分かれていたパターンでした。
 今度は、3個と1個に分かれたパターンを紹介しましょう。

図 3-1

 図3-1、今度もA〜Hの8枠に候補数字が並んでますね。
 ただ、候補数字の分布がセクションとは違います。

  • 候補数字は枠A, Bにしかない。
  • 候補数字は枠B, Cにしかない。
  • 候補数字は枠C, Dにしかない。
  • 候補数字は枠D, Eにしかない。
  • 候補数字は枠E, Fにしかない。
  • 候補数字は枠F, Gにしかない。
  • 候補数字は枠G, Hにしかない。
  • 候補数字は枠H, Aにしかない。

 候補数字が3:1に分かれた形をしてますね。
 でも、この場合も状況は同じだったりする。

どの候補数字も、ただ1個の列またはただ1個のブロックにしか存在しない。

 図3-1 のパターンも、8枠A〜Hのマスは全部で16個ありますね。
 そして、枠内にある候補数字はの全16種類。
 16と16で同数です。
 引き続き、同数であることに注意してください。

図 3-2

 さぁ、結論です。

  • 2枠を共有する列やブロックにおいて、枠外のマスから該当の候補数字をすべて除去できる。

 図3-2 だと、×印のマスが該当します。
 例えば、枠D, Eの属する右端タテ列では、候補数字4が除去されます。
 枠G, Hの属する左下ブロックでは、候補数字3, 5, 6の除去が発生します(残念ながら候補数字5は効果がなかった)。

 理由はまったく同じです。
 全16種類の候補数字は、すべて8枠A〜Hのどこかに必ず1個ずつ入ることになるからですね。

3-2.マスが少なくなっちゃった!

 今までは、マスが16個の場合を解説しました。
 実は、マスが少なくなっても SK Loop は使えるんです。

図 3-3

 図3-3、今度は枠内に数字が確定して、マスがちょびっと少なくなりました。
 マスは全部で13個。
 候補数字の分布はどうなっているでしょう?

  • 候補数字は枠A, Bにしかない。
  • 候補数字は枠B, Cにしかない。
  • 候補数字は枠C, Dにしかない。
  • 候補数字は枠D, Eにしかない。
  • 候補数字は枠E, Fにしかない。
  • 候補数字は枠F, Gにしかない。
  • 候補数字は枠G, Hにしかない。
  • 候補数字は枠H, Aにしかない。

 枠によって候補数字が1種類だったり2種類だったり。
 でも、このパターンも状況は同じです。

どの候補数字も、ただ1個の列またはただ1個のブロックにしか存在しない。

 今回のパターンは、8枠A〜Hの空きマスは全部で13個。
 そして、枠内にある候補数字はの全13種類。
 13と13で同数です。
 引き続き、同数であることに注意してください。

図 3-4

 この場合もやっぱり結論は同じです。
 こうなります。

  • 2枠を共有する列やブロックにおいて、枠外のマスから該当の候補数字をすべて除去できる。

 図3-4 だと、×印のマスが該当します。
 理由はまったく同じです。
 全13種類の候補数字は、すべて8枠A〜Hのどこかに必ず1個ずつ入ることになるからですね。

4.難解なこの解法を生んだのは、まさしく難解な問題だった

 ここからは余談です。
 ……が、途中から話が難しくなるので、ご注意ください😓
 この解法が生まれたキッカケとされている、「Easter Monster」という名前のナンプレを紹介しましょう。

図 4-1

 図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" なナンプレなんです。

図 4-2

 ここで出番となるのが 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 を捉えてみようと考えた。
 こういう次第です。
 リンクを多用するマニアが陥りやすい落とし穴、その話をしてみます。

図 4-3

 リンク、そして、グルッと一周する。
 これを聞いて Nice Loop を思い浮かべた方々はもぅ十分ナンプレマニアです😃
 たしかに、その解法に目を付けたのは鋭いんです。
 実際、「枠Aに3と8は入らない」という仮定の下で反時計回りに論理展開すると、次の手順で矛盾なく一周できます。

  1. 枠Aから3と8が除去される。
  2. 枠Aには2と7が入る。
  3. 枠Bから2と7が除去され、4と8の2国同盟が発生する。
  4. 枠Cから4と8が除去され、1と6が入る。
  5. 枠Dから1と6が除去され、4と5の2国同盟が発生する。
  6. 枠Eから4と5が除去され、2と7が入る。
  7. 枠Fから2と7が除去され、3と9の2国同盟が発生する。
  8. 枠Gから3と9が除去され、1と6が入る。
  9. 枠Hから1と6が除去され、3と8の2国同盟が発生する。
  10. 1. に戻る。

 そして、枠Aに入らなかった数字3, 8は必ず枠Hに入るから、3と8の入り得る場所は枠A, Hに限定され……と青色×印が付く。
 上記の手順は循環できるから、どの枠から始めても反時計回りに論理展開できる。これにより、黒色の×印も付く。

 これで 図4-2 の結論は無事証明されたね!
 ……とまぁ、こういうシナリオが頭に浮かぶわけです。

 ところが!
 残念ながら、このシナリオには大きな穴がある😞
 というのも、枠Aの数字の入り方は「3も8も入らない」「3も8も入る」の2通りだけではないからです。
 「3と8の片方だけ入る」という第三の入り方もあるんです。

 ここで、ちょいとリンクのおさらい。
 本来、リンクは単独の候補数字を数珠つなぎにして使います。
 そして、「チェーン先頭の候補数字が真であっても偽であっても必ず○○は成り立つよ!」という理屈で、その「○○」を結論としているわけですね。
 X-ChainXY-ChainAlternate Inference Chain もそうやって結論を導いています。
 Nice Loop(不連続ループ)などの例外はあるけれど、基本は「真であっても偽であっても論」で展開していくんです。

 しかし、今回はその「真であっても偽であっても論」は使えません。
 だって、第三の選択肢が現れちゃったんだもの😞
 今回は「次の a. b. c. のどの場合でも必ず 図4-2 は成り立つよ!」と言わなければいけないんですね。

  1. 枠Aには3も8も入らない。
  2. 枠Aに3と8の両方が入る。
  3. 枠Aに3と8の片方だけが入る。

 形が Nice Loop の応用っぽく見えるから、それをチャチャッと適用して SK Loop を理解できたと勘違いしがち。
 勘違いしたままでは正しく理解できようはずもありません。
 安易な理解で済ませず、些細な疑問もしっかり解消していく。そういう姿勢は大事です。
 わかった気になっている時が一番危ない。
 気をつけましょう!
 ……ていうか、私がやっちゃったよ😅 この勘違い😅

 では、気を取り直して。
 a. b. c. のどの場合でも 図4-2 の結論に行き着くのかどうか、検証してみましょう。

図 4-4

 まずは、《a. 枠Aには3も8も入らない》場合。
 これは 前図4-3 がそのまま検証結果になりますね。

 次に、《b. 枠Aに3と8の両方が入る》場合。
 これは、時計回りに論理展開するとOKです。

  1. 枠Aに3と8が入る。
  2. 2国同盟により枠Hから3, 8が除去される。
  3. 枠Hに1と6が入り、枠Gから1, 6が除去される。
  4. 枠Gに3と9の2国同盟が発生、枠Fから3, 9が除去される。
  5. 枠Fに2と7が入り、枠Eから2, 7が除去される。
  6. 枠Eに4と5の2国同盟が発生、枠Dから4, 5が除去される。
  7. 枠Dに1と6が入り、枠Cから1, 6が除去される。
  8. 枠Cに4と8の2国同盟が発生、枠Bから4, 8が除去される。
  9. 枠Bに2と7が入り、枠Aから2, 7が除去される。
  10. 1. に戻る。

 結果は 図4-4 の通りです。

 手順は循環するため、「数字3も8も枠Hに入らなかった時、両者とも必ず枠Aに入る」と言えます。
 この場合も青色×印が付くんですね。
 黒色×印も同様です。

 最後は《c. 枠Aに3と8の片方だけ入る》の場合です。
 この場合はちょっぴりトリッキーな方法で説明しましょう。

 a. b. のパターンはそれぞれ 図4-3・図4-4 で示しました。
 枠内の数字の色を見てみると、わかりやすい特徴がありますね!
 そう、どの枠も同色なんです。
 枠Aから論理展開を始めたら、どの枠も同色の数字が収まったんですね。しかも、a. b. どちらも手順は循環するのだから、どの枠から始めても同じ結果に至ります。
 そう考えると、実はこんなことが成り立つんです。

図 4-5

 それを踏まえて、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 を使った場合と同じ結論になりました😊

参考・参照

更新履歴