Strategy Notation Used matrix & Coordinate Used matrix
Implicit Triple ( Block ) Lb Place (Block , Number ) gg_matrix ( gb-matrix)
Implicit Triple ( Row ) Lr Place (Row , Number ) gr_matrix (gl-matrix )
Implicit Triple ( Column ) Lc Place (Number , Column ) gc_matrix
Explicit Triple ( Block ) Tb Place ( Number , Block ) Transposed matrix of gg_matrix
Explicit Triple ( Row ) Tr Place ( Number , Row ) Transposed matrix of gr_matrix
Explicit Triple ( Column ) Tc Place ( Column , Number ) Transposed matrix of gc_matrix
Swordfish ( Row ) Ur Number ( Row , Column ) Candy_matrix
Swordfish ( Column ) Uc Number ( Column, Row ) Transposed_matrix of candy_matrix
where, Implicit means term of "Hidden" and Explicit means that of "Naked" respectively.
今回の実例の場合、Lc(Implicit Triple of Column )で初めて当てはまるケースが見つかります。探索には、gc-matrix を使います。
先に示した candy matrix より、gc-matrix を作成します。
Fig 1 gc-matrix converted from candy matrix
黄色のセルは、3国同盟を形成する第7列目にある3つに部屋 cdh でそこに 379 の数字の候補が入ります。candy matrix では、他の候補とまぎれた”hidden”の状態ですが、この gc-matrix では、”naked” の状態になります。
ここに、念のため記しておきますが、部屋の呼び名は、それぞれの列で、上から順にa,b,c,・・となります。
Fig. 2 Notation of each place at column 7
Lc_search に入ると、一列目(icol=1)から順に三国同盟が成立するかを調べていきます。
第7列になったときのgc-matrix より作成した chainr-matrix は次のようになっています。
Fig.3 Candidates of place for each number
第7列目で、候補の数字を持つ場所(Place)がmatrixの値となります。
Step 1 の candy matrix で、上の表の意味を確認下さい。
右端および下端の数は、placeおよびnumber の候補の数です。chainr-matrix (Fig.3)からColumn 7ですでに決まった数字を持つ3つの場所を除き、候補の数が少ない順に列および行を並べ変えます。
Fig.4 Aranged chainr-matrix
さらに、三国同盟(room=3)を形成するのは、knum<=room つまり候補の数が3以下の場合なのでそれ以上の候補を持つ行、列を除きます。
Fig. 5 Condensed chainr-matrix called as jun-matrix
さらに、該当する行と列だけに絞り込みます。
Fig.5 Rearanged jnn-matrix
最終的に三国同盟を形成する3つの数字が入る3つのセルがもとまりました。
Fig.6 Implicit Triple derived from gc-matrix of column 7
Lc-search では、C7-c, -d, -h の3つのセルは、379で占有されるので、それ以外の候補の数字があれば、これらのセルから消去されます。
その結果として、これらのセル以外の場所で、これらの数字以外候補が基本技で決まる(場合がある)ことになります。
何と言っても、このアルゴリズムの凄いところは、三国同盟を形成する候補の組み合わせを全て一つのマクロでカバーしていることです。