ベーシックフィッシュ
ベーシックフィッシュ
数独のフィッシュパターンとは?
フィッシュパターンは、ある数字の候補が行と列にまたがってどのように並ぶかを利用する、単一数字テクニックの一群です。どのフィッシュパターンも仕組みは同じです。ある数字の候補が限られた数の列(または行)に限定されている行(または列)の集合を見つけ、それ以外の場所から候補を消去します。各フィッシュパターンは、一度にちょうど1つの数字に注目します。グリッド全体における1つの数字の分布を見ます。4つの基本フィッシュはすべて同じ基盤アルゴリズムを共有しており、違いはサイズだけです。
核心となる原理:行と列における鳩の巣論理
ある数字について、その候補がN列以内に限定されているN行を見つけられれば、それらの列は選択した行からしかその数字を受け取れません。合併がN列より少ない場合、その行はすでに矛盾を含んでいるため、有効なフィッシュは実質的にちょうどN個のカバー列を使います。N行のそれぞれは、その数字をちょうど1回配置しなければなりません。各行の数字はカバー列のいずれかに入ります。N行とN個の使用可能なカバー列があるため、カバー列はベース行によって完全に埋め尽くされます。ベース行の外側でカバー列の内側にあるその数字の候補はすべて削除できます。同じ論理は、列をベース、行をカバーとして逆にも成り立ちます。スキャン時には両方向を確認すべきです。
X-Wing:2x2のフィッシュパターン
X-WingはN=2を使用します。つまり2行が2列に対応します。ある数字のX-Wingは、ちょうど2つの行がそれぞれその数字を同じ2列の候補として含むときに発生します。4つのマスは長方形を形成します。その数字はこれら2列の他のすべてのマスから消去できます。同じパターンは列ベースでも機能します。X-Wingは難易度レベル4(中程度)に分類されます。
サーベルフィッシュ:3x3のフィッシュパターン
サーベルフィッシュはフィッシュ論理をN=3に拡張します。つまり3行が3列に対応します。すべての行が3列すべてに候補を持つ必要はありません。必要なのは、候補列すべての合併がちょうど3になることだけです。サーベルフィッシュはX-Wingと同じレベル4(中程度)と評価されています。基盤となる論理は同一です。
クラゲ:4x4のフィッシュパターン
クラゲはN=4を使用します。つまり、4つの行が4つの列に対応します。個々の行では、4つの列のうち2つ、3つ、または4つにのみ候補が存在することがあります。クラゲはレベル7(VeryHard)に分類されます。4つの行がちょうど4つの列に整列する特定の配置は珍しいため、出現頻度は低くなります。9つから4つの行を選ぶ方法は126通りあるため、体系的な手作業での探索には忍耐が必要です。
スキュアームバッグ:5x5のフィッシュパターン
スキュアームバッグはN=5を使用します。つまり、5つの行が5つの列に対応します。レベル9(Master)と評価されており、実際には極めて稀です。スキュアームバッグには、5-フィッシュで使われていない行と列に補完的なクラゲが存在します。補完的なクラゲの方が小さいため、ほとんどの解答者や多くの解法エンジンは、両方の説明が利用可能な場合にクラゲを先に報告します。そのため、スキュアームバッグは実用的な手解きの対象というよりも、理論的な拡張としてより有用です。この補完性の原理はさらに広がります。6-フィッシュはサーベルフィッシュを補完し、7-フィッシュはX-Wingを補完し、8-フィッシュは隠れたシングルを補完します。N=5は、名前の付いた基本フィッシュの実用的な最大値です。
パズルでフィッシュパターンを見つける方法
ステップ1:まだ未解決の位置が複数ある数字を選びます。ステップ2:行ごとに候補位置をマッピングします。選んだ数字について、各行でどの列にその数字が含まれるかをリストアップします。位置が2つか3つしかない行が最も有望です。ステップ3:列の重なりを探します。N個の行の組み合わせで、候補がちょうどN個の列にまたがるものがあるか確認します。ステップ4:カバー列に除外が存在することを検証します。ステップ5:列ベースのフィッシュについても繰り返します。複数の行がちょうど2つの候補位置を持つ数字に注目してください。候補が2つある行は、フィッシュパターンの構成要素です。
フィッシュパターンの難易度の進行
X-Wing:N=2、レベル4、Moderateサーベルフィッシュ:N=3、レベル4、Moderateクラゲ:N=4、レベル7、VeryHardスキュアームバッグ:N=5、レベル9、Masterサーベルフィッシュ(レベル4)からクラゲ(レベル7)への跳躍は、人間の解答者にとっての難易度の大幅な上昇を反映しています。
高度なフィッシュ変種との関係
基本フィッシュは「フィンなし」または「標準」のフィッシュです。高度な変種には以下が含まれます。フィンドフィッシュ:予想される列の外側に追加の候補(「フィン」)が存在します。フィン付き変種はすべてのサイズでレベル7〜9に存在します。サシミフィッシュ:フィンを取り除くとフィッシュではなく隠れたシングルが残るフィン付きフィッシュ。レベル7〜9。フランケンフィッシュ:ブロックが行や列と並んで定義ハウスとして機能します。レベル10〜11。ミュータントフィッシュ:あらゆるハウスの組み合わせがベースセットとカバーセットとして機能できます。最も一般的な形です。核心となる原理--N個のハウスが数字をN個のクロスハウスに閉じ込める--は、すべての変種で同じです。
まとめ
基本的なフィッシュ系ファミリー--X-Wing、サーベルフィッシュ、クラゲ、スキュアームバッグ--は、ひとつの原理に基づいています。N個の行が数字をN個の列に限定すれば、それらの列で候補を消去できるというものです。これら4つのテクニックは、比較的見つけやすいX-Wingから、ほとんど見かけないスキュアームバッグまで幅広く対応し、フィンドフィッシュ、サシミフィッシュ、フランケンフィッシュの基礎となります。すべてのフィッシュパターンは、規模が違うだけで同じテクニックです。X-Wingがなぜ成立するかを理解すれば、スキュアームバッグがなぜ成立するかも理解できます。