
...assorted explanations...

need a linked-struct for each digit d:

on(d,r0,c0) -> DblLink

DblLink: off(d,r1,c1) -> on(d,r2,c2) -> DblLink

xcycle: array(1..9,1..9) of coords;
[ types coords is array(1..2) of 1..9 ]


Xcycle
a linked chain similar to linkedPairs but every odd-link
is a weak link, i.e. dig@A => not dig@B, where
multiple copies if "dig" may be in this house.
Every even-link is strong, i.e not dig@A => dig@B,
because this house has only 2 copies of dig.

Eg: 
          one/many               1/2
on(r1,c1) -weak->  off(r2,c2) -strong->  on(r3,c3), 
...
ending with on(rz,cz) in same house as (r1,c1).

The goal is a contradiction @ end of Xcycle
where 2 of same digits in the same house are ON, 
which implies the initial ON assumption must be false.
In this case, hilite the initial ON in different
bright color, to flag its removal.

Seek, then show, 1st Xcycle that leads to a 
contradiction. If none arise, don't show any chain.

====================================================
Ywing usage:
there exists only 2 options @ pivot,
either one forces the pincers to eliminate
the target digit @ pincer-intersection.

====================================================

linked-pairs [single's chains or simple coloring]

choose a digit d

list all cells with the digit d where
there are only 2 instances in one or
more of the cell's 3 houses [or 4,X].
(I already do most of this: hiliteRC, 
hiliteD,...need only hiliteB).
Then, "color" the digits d as 
alternating Red/Blue.

1) if any house has 2 d's with
	the same color, then that color
	must represent OFF. So remove them
	as candidates.

2) (rule4) if any other cell with d
	that can see both colors (cyan-d + magenta-d)
	its d can be eliminated.

3) (rule2) if any other house [3 or more d's]
	has the same color twice,
	then all those d's are OFF.

