解法ガイド / Sue de Coq
極難
Sue de Coq
Sue de Coq は、もともと Two-Sector Disjoint Subsets と呼ばれていました。行または列とボックスの交差部に、両側の ALS を組み合わせるテクニックです。
候補を共有しない 2 つの ALS が、それぞれ 1 数字を交差部へ渡します。その結果、交差部を共有する 2 つのロック集合ができます。
1. 構成要素
ロック集合は、同じハウス内の N セルに候補がちょうど N 種類ある集合です。その N 数字は必ず N セルを埋めます。
ALS(Almost Locked Set)は、同じハウス内の N セルに N+1 種類の候補がある集合です。N セルを埋めるとき、ALS の候補からちょうど 1 種類が使われません。2 候補セルは 1 セル 2 数字の最小 ALS です。
交差部 C は、選んだ行・列とボックスの両方に属する未確定セルです。その候補の和集合を V とします。典型形は、2 セル 4 候補、または 3 セル 5 候補です。
2. 厳密な条件
- 青セル:交差部 C。
- 黄セル:交差部の外にある行・列側 ALS L。
- 緑セル:交差部の外にあるボックス側 ALS B。
- 赤候補:削除できる候補。
次をすべて満たす必要があります。
- C は 2 セル以上。
- L は p セル、候補はちょうど p+1 種類。
- B は q セル、候補はちょうど q+1 種類。
- L と B の候補はすべて V に含まれる。
- L と B は候補数字を 1 つも共有しない。
|C| + |L| + |B| = |V|。
候補の非共有と最後の等式が安全性の中心です。どちらかが欠けると交差部に余分な自由が残ります。
3. なぜ成立するのか
黄 ALS は p+1 種類から p 数字を使って p セルを埋めるので、候補のうちちょうど 1 数字を使いません。緑 ALS も同様に 1 数字を使いません。
青セルは、行・列を通じて全ての黄セルを見て、ボックスを通じて全ての緑セルを見ます。片側ですでに使われた数字は C で重複できません。C に残るのは次だけです。
- 黄 ALS が使わなかった 1 数字。
- 緑 ALS が使わなかった 1 数字。
- どちらの側にも割り当てられていない V の数字。
個数の等式により、残る数字はちょうど |C| 種類です。したがって C はそれらをすべて受け取ります。
黄側の各候補は、黄 ALS か C のどちらかに必ず現れ、行・列内にロックされます。緑側の各候補は、緑 ALS か C に現れ、ボックス内にロックされます。交差部だけの候補は C にしか入れないので、両方のハウスでロックされます。
4. 基本例
青 2 セルの候補和集合が 1,2,3,4、黄の 2 候補セルが 1,2、緑の 2 候補セルが 3,4 とします。
黄セルは 1,2 の一方を使い、もう一方を C に残します。緑セルも 3,4 の一方を使い、もう一方を C に残します。よって 1,2 は行・列内、3,4 はボックス内にロックされます。

青 3 セルが 1,2,3,4,5 を持ち、両側が 1,2 と 3,4 を担当するなら、5 は交差部専用です。5 は行・列とボックスの両方でロックされます。

5. 複数セルの側 ALS

側は 1 個の 2 候補セルに限りません。緑セル 3,4 と 4,5 は、2 セル 3 候補の ALS です。2 数字を使い、残る 1 数字を C に渡します。個々のセルではなく、グループ全体が N セル N+1 候補かを確認してください。
6. ALS-XZ・APE との違いと実装範囲
ALS-XZ は 2 つの ALS を RCC で結びます。APE は 2 基準セルの候補組合せをすべて検査します。Sue de Coq は RCC チェーンも組合せ列挙も使わず、V を非共有の 2 側に分けて正確な個数でロックを証明します。
アプリは、複数セルの側 ALS を含む厳密な V 内形を実装しています。この一般化を Extended Sue de Coq に含める資料もあります。さらに広い拡張形では V にない側候補や、3 セル交差部の一部だけを使う場合があります。追加セルと一般化した計数が必要なため、ここでは検出しません。
7. よくある誤判定
- 2 側が同じ候補を共有している。
- 側グループが N セル N+1 候補ではない。
- 側候補が V に含まれていない。
- 色付きセル総数が |V| と一致しない。
- 黄候補をボックス側から、または緑候補を誤った行・列から削除する。
- 候補メモが不完全である。
8. 確認手順
- C と V を求める。
- 黄・緑 ALS をそれぞれ N/N+1 と確認する。
- 両側の候補が非共有か確認する。
|C| + |L| + |B| = |V|を確認する。- 黄候補を行・列の残りから削除する。
- 緑候補をボックスの残りから削除する。
- 交差部専用候補を両方のハウスで確認する。