ここではサイクル形の解法を中心に説明します。解法の説明の前に必要な用語の説明をしたいと思います。
あるユニット(列、ボックス)に位置する二つのマスが同じ数字候補を持つとき、この二つのマスはその数字候補を介したリンクを持つといいます。このつながりには強いリンクと弱いリンクの2種類があります。
数字xを候補にもつAB二つのマスがあったとき、AがxではないときにBがxとなる関係を強いリンクといいます。(ABを交換しても同)
この逆にAがxのときBはxではないという関係がなりたつリンクを弱いリンクといいます。(ABを交換しても同)
あるユニット(列、ボックス)にxを入れることができるマスがA, B 2つしかないとき、その二つのマスはxを介した強いリンクを持ちます。この関係を[A]=x=[B]と表記します。図で書くときは二つのマスを実線で結び、中にxを書いた黄色い丸のラベルで示します。
あるユニット(列、ボックス)にxを入れることができるマスがA, Bの他にも一つ以上あるとき、ABはxを介した弱いリンクをもちます。この関係を[A]-x-[B]と表記します。図で書くときは二つのマスを点線で結び、中に-xと書いた青い四角のラベルで示します。
上は4に注目して一部のリンクを表示したものです。r1c1とr3c3はこのボックスに2つしか4の入るマスがありません。したがってどちらか一方が4でないとき、他方は4となり、強いリンクを持ちます。また、どちらか一方が4のときは他方は4以外になるので弱いリンクも持っています。
これに対して、r3c3とr3c7は、弱いリンクしか持ちません。どちらか一方が4でないことがわかっても他方が4になるかどうかは不明のままです。
全てのリンクは弱いリンクです。強いリンクは弱いリンクに強いリンクの性質を加えたものとも言えます。したがって強いリンクは弱いリンクの働きもします。
X-cycleはある数字xを候補に持つマスの連鎖を利用したテクニックです。この連鎖は第一に強いリンクと弱いリンクが交互になっている必要があります。
数字xのリンクは強いリンクであれば何連鎖でもつながります。一つどこかが決まれば、連鎖全体が確定します。(Simple Chainaではこの強いリンクの性質を利用しました)これに対し弱いリンクは二つ以上連続してつなげることはできません。[A]-x-[B]-x-[C]というリンクを考えた時、Aにxがはいる事が確定したとしても、Cになにが入るかは不明のままです。
けれども弱いリンクが一つおきに現れている場合は話が異なります。
[A]=x=[B]-x-[C]=x=[D]-x-[E]=x=[F]
というリンクを考えてみます。Aがxでない時, Bはx、するとCはx以外で、Dはxという風につながり0x0x0xとリンク全体が確定します。ではAがxの時はどうなるかというと、そのまま考えるとBはxでないとなってそこで連鎖が切れてしまいます。しかしFがxでないという初期条件をもとに連鎖を逆向きにたどると、Aはxという結論が導かれx0x0x0とリンク全体が確定します。このように弱いリンクでも交互に現れるときは連鎖を続けることが可能になります。なお、上の例で使った弱いリンクの部分は強いリンクと交換可能であることはいうまでもありません。
1.1 X-cycle (連続ループ)
X-cycleのテクニックはxのリンクが輪になっている時に適用することができます。リンクを構成するマスが偶数の時、これを連続したループといいます。連続したループでは強いリンクと弱いリンクが交互に現れます。このとき、弱いリンクを含むユニット(列、ボックス)ではリンクのノード以外のマスにxを入れることはできません。
1.2 X-cycle (不連続ループ)
輪を構成するマスの数が奇数の場合、全ての場所で強いリンクと弱いリンクが交互に現れることは絶対にありません。必ずどこかで強いリンクまたは弱いリンクが連続しているはずです。X-cycle不連続ループのテクニックはこの不連続点が1箇所のみの場合に適用できます。
輪の不連続点で強いリンク同士がつながっている時、その不連続点には必ずxがはいります。逆に不連続点で、弱いリンク同士がつながっているとき、不連続点にはx以外の数字が入ります。
5つのノードと4もしくは3本の強いリンクまたは2本の連続していない強いリンクからなる連鎖をTurbot Fishと呼びますが、これはX-cycle(不連続ループ)の代表例ともいえます。左はその例です。 黄緑のマスが不連続点です。弱いリンクがここで連続しているので、このマスにはxは入りません。
(ちなみに5つの強いリンクで構成される5マスのループはありえないのですが、理由はわかりますか?)
他のパターン。黄色のマスが不連続点。強いリンクがこのノードを介して連続しているので、このマスにはxがはいります。 名前の由来はこの形からきています。強いリンクは弱いリンクとしても扱えるため、この様に4つの強いリンクからなるTurbot Fishは全てのノードを不連続点として理解することができます。 その結果、黄色のマスにxが入り、黄緑のマスにはxが入らないことがわかります。
例えばr1c6を不連続点として扱う場合、左図のような配列に置き換えて考えます。 なぜ不連続点のマスが決定するのでしょうか? 連続のケースと同じように考えてみます。ループを構成するマスが奇数なので、不連続点だけを飛び出した形でX-cycleを並べてみます。
左は不連続点で強いリンクが連続するケースです。
このとき不連続点がx以外だとすると左の様に連鎖が決まります。この強いリンクの右がx, 弱いリンクの右がx以外というのは連続のケースで矛盾が生じるパターンと同じです。したがって不連続点にxが入ることがわかります。 不連続点で弱いリンクが連続するケースでは、不連続点がxと仮定してみます。するとやっぱり矛盾のパターンになるので、不連続点にはxがはいらないことがわかります。
X-cycleはある数字xを候補に持つマスのつながりを利用しました。XY-chainでは候補になる数字が2種類しかないマスのつながりを利用します。X-cycleでは強いリンクと弱いリンクが交互に現れる必要がありましたが、XY-chainでは全てのリンクは弱いリンクです。そのかわりに、リンクにつくラベルは隣接するリンクのラベルと違う数字でなくてはなりません。
X-cycleと同様リンク全体が輪になっているときこのテクニックが利用できます。
1.1 XY-chain (連続ループ)
4マスからなる一番単純なXY-cycleです。このとき、各リンクが位置するユニットのノード以外のマスにはリンクのラベル数字を入れることができません。 この例の場合、黄色のマスにはa, ピンクのマスにはd, 緑と水色の混ざった様な色のマスにはc、グレーのマスにはbを入れることができません。
X-cycle同様複雑な形でも適用できます。 黄色のマスにはそれぞれが含んでいるリンクのラベルの数字を入れることができません。
なぜそうなるかはラベルとノードの関係をおっていけばすぐ理解できると思います。
黄色のマスにラベルの数字が入るということは、そのユニットのノードにはその数字は入らないということです。したがってそのノードにつながっているもう一つのリンクのラベルの数字が入ることになります。この様に次のリンクのラベルが各ノードに入っていくと、ノードの数が偶数の時はどこかのリンクの両端が同じ数字に、奇数の時は何も入れることができないノードが生じます。
こう考えるともすこし分かりやすいかもしれません。ノードの数もリンクの数もともに同じです。黄色のマスにラベルの数字を入れるということはラベルが1個減った(ループに入れられる数字が1個減った)ことになりますが、入れるノードの数は前とおなじまま。したがって入れる数字が足りなくなる.
2.2 XY-chain (不連続ループ)
ループの中で同じラベルが連続しているところを不連続点といいます。不連続点を1つだけもつループに適用できるのがこのテクニックです。 不連続点には連続したラベルの数字は入りません。仕組みは連続ループと同じです。
左図の場合、r2c7でaをラベルに持つリンクが連続しています。このとき、このマスにはaをいれることができません。
でも、ちょっとまってください。不連続点に連続したラベルの数字が入らないという仕組みをよく考えると、XY-chain(不連続)の不連続点はXY-chainの条件すら満たさなくてもよいことに気付きます。 すなわち不連続点だけは2つ以上の候補をもっていても XY-chainのテクニックが適用できるということです。(ループになっていなくてもよい)
このことを考えると、XY-wingはXY-chainの最も単純なケースだと理解できます。(黄色のマスが不連続点。このマスにはzははいらない)
Grouped X-cycleはX-cycleではループの各ノードが一つのマスだったのに対し、一部のノードを複数のマスのグループに置き換えたものです。
左図の緑のマスがグループとして扱われているノードです。前後のノードと同じユニットに属している複数のマスはグループとして単一のマスと同じ様に扱うことができます。 グループの仕組みはX-cycle以外の他のテクニックと併用することもできます。 左図は浜田ロジックと組み合わせた場合です。
これはグルーピングと同様、他のテクニックと組み合わせて使用するサポート的な技術です。
このサイトを最初から読みすすめてこられた方なら、何度か連鎖の両端から見えるマスとか、両方のマスから見えるマスという言葉が出てきたことを覚えていらっしゃると思います。いくつかのテクニックは連鎖の両端から見えるマスからある候補数字を取り除くものでした。
例えば4個のマスからなるxをラベルにした強いリンクによる連鎖の両端から見えるマスにはxをいれることができません。
ところが実際にナンプレを解く時に探してみると、うまい連鎖がみつかることはそれほど多くはありません。連鎖が見つかっても両端から見えるマスには適用できないことが結構あります。そんな時、全然離れた場所から連鎖の両端が見えるとしたらすごーく便利だと思いません? Empty Rectangleうまくはまるとそんな便利な機能を発揮するテクニックです。
Empty Rectangleとはある数字xを候補にもたないマスで描く四角を指します。 左図で水色のマスの様にxを候補にもつマスが並んでいるとします。そのときxを候補に持たないマスの一部を結ぶと赤字の様な四角形を描くことができます。
Empty Rectangleはこの様に四角形が描けることから名付けられていますが, 実際に重要なのはxを候補に持つマスの配列です。
Empty Rectangleが成り立つ配置では必ず、xを候補に持つマスが縦横1列ずつにまとまっています。この様な配列はちょっと変わった働きをします。 左図のようにr2c5とr6c5がxの強いリンクで結ばれていたとします。黄色のマスからはr6c5しか通常は見ることができません。 しかし、box3に図の様なEmpty Rectangleができている場合は異なります。もしr2c5がxだとしたらr2c789はx以外となります。(水色のマス)このときxが入るのはr1c8かr3c8のどちらかです。(ピンクのマス)どちらに入っても黄色のマスからピンクのマスがみえるので、黄色のマスにはxは入りません。
結果としてどんな場合にも黄色のマスにはxが入らないことになります。この様にEmpty Rectangleはあたかも視線を直角に曲げるような働きをします。
2006/9/12