- Code: Select all
.---------------------------------.---------------------------------.---------------------------------.
| 123456789 13456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
| 123456789 13456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
:---------------------------------+---------------------------------+---------------------------------:
| 123456789 13456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
| 123456789 13456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
| 123456789 13456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
:---------------------------------+---------------------------------+---------------------------------:
| 123456789 13456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
| 123456789 13456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
'---------------------------------'---------------------------------'---------------------------------'
okay, ill make my point clearly:
That's a continuous X-Cycle: A=B-D=C-loop
It can be broken into two X-Chains:
1) A=B-D=C
2) B=A-C=D
A does not see C as a peer!
[if it did and they shared a common candidate that reduce the other to a single then it is continuous]B does not see D as a peer!
[ if it did and they shared a common candidate that reduce the other to a single then it is continuous ] they are Discontinuous chains start with the Elimination cell and the chain construct proves it is invalid, meaning it has more cells and higher run time an x-wing
4 cells arent checked in an x-cycle and it is
not a Continuous loop as the starting cell dose not see the last cell. it wont matter what corner you pick the last cell is always poler opposite of the starting cell.
load the example above into hudoku digit 2 forms an x-wing on cols
X-cycles as a turbot requires 2 moves to prove all the x-wing eliminations, these chains are bi directional as the end points{elimination cells} are also used in the chain!!
Turbot Fish: 2 r2c2 =2= r8c2 -2- r8c8 =2= r2c8 => r2c1345679<>2
Turbot Fish: 2 r8c8 =2= r2c8 -2- r2c2 =2= r8c2 => r8c1345679<>2
seen as an x-cycle requires 2 moves to prove all the x-wing eliminations, these chains are bi directional as the end points{elimination cells} are also used in the chain!!
X-Chain: 2 r2c2 =2= r8c2 -2- r8c8 =2= r2c8 => r2c1345679<>2
X-Chain: 2 r8c2 =2= r2c2 -2- r2c8 =2= r8c8 => r8c1345679<>2
it can also be an AIC requires 2 moves to prove all the x-wing eliminations, these chains are bi directional as the end points{elimination cells} are also used in the chain!!
AIC: 2 2- r2c2 =2= r8c2 -2- r8c8 =2= r2c8 -2 => r2c1345679<>2
AIC: 2 2- r8c2 =2= r2c2 -2- r2c8 =2= r8c8 -2 => r8c1345679<>2
Discontinuous Nice Loop is even worse as these can only remove 1 of the elimination cells at a time.
Discontinuous Nice Loop: 2 r2c1 -2- r2c2 =2= r8c2 -2- r8c8 =2= r2c8 -2- r2c1 => r2c1<>2
Discontinuous Nice Loop: 2 r2c3 -2- r2c2 =2= r8c2 -2- r8c8 =2= r2c8 -2- r2c3 => r2c3<>2
Discontinuous Nice Loop: 2 r2c4 -2- r2c2 =2= r8c2 -2- r8c8 =2= r2c8 -2- r2c4 => r2c4<>2
Discontinuous Nice Loop: 2 r2c5 -2- r2c2 =2= r8c2 -2- r8c8 =2= r2c8 -2- r2c5 => r2c5<>2
Discontinuous Nice Loop: 2 r2c6 -2- r2c2 =2= r8c2 -2- r8c8 =2= r2c8 -2- r2c6 => r2c6<>2
Discontinuous Nice Loop: 2 r2c7 -2- r2c2 =2= r8c2 -2- r8c8 =2= r2c8 -2- r2c7 => r2c7<>2
Discontinuous Nice Loop: 2 r2c9 -2- r2c2 =2= r8c2 -2- r8c8 =2= r2c8 -2- r2c9 => r2c9<>2
Discontinuous Nice Loop: 2 r8c1 -2- r8c2 =2= r2c2 -2- r2c8 =2= r8c8 -2- r8c1 => r8c1<>2
Discontinuous Nice Loop: 2 r8c3 -2- r8c2 =2= r2c2 -2- r2c8 =2= r8c8 -2- r8c3 => r8c3<>2
Discontinuous Nice Loop: 2 r8c4 -2- r8c2 =2= r2c2 -2- r2c8 =2= r8c8 -2- r8c4 => r8c4<>2
Discontinuous Nice Loop: 2 r8c5 -2- r8c2 =2= r2c2 -2- r2c8 =2= r8c8 -2- r8c5 => r8c5<>2
Discontinuous Nice Loop: 2 r8c6 -2- r8c2 =2= r2c2 -2- r2c8 =2= r8c8 -2- r8c6 => r8c6<>2
Discontinuous Nice Loop: 2 r8c7 -2- r8c2 =2= r2c2 -2- r2c8 =2= r8c8 -2- r8c7 => r8c7<>2
Discontinuous Nice Loop: 2 r8c9 -2- r8c2 =2= r2c2 -2- r2c8 =2= r8c8 -2- r8c9 => r8c9<>2
the only move set capable of removing all 14 elimination at once is the "x-wing" from the cover set algorithm used by the fish-finder or the pattern known as "x-wing"
X-Wing: 2 c28 r28 => r2c1345679,r8c1345679<>2
]I'm only talking about manual (pencil and paper) human solving, as that's what I do (for now), but I assume the same principle would easily apply to coding as well. If you have a chain capable of multiple eliminations, it's inefficient to create a separate discontinuous loop for each elimination. For example, the SudokuWiki solver is pretty dumb in that regard -- in that only continuous loops and XY-Chains can provide multiple eliminations in a single step, but all other multiple-elimination-capable AICs (including X-Chains such as Skyscrapers) are seen as multiple discontinuous loops and multiple steps (except for some named patterns). Hodoku has no such deficiency, as far as I know, and it understands the general principle better: "Any AIC can be seen as a combination of one or more Discontinuous Nice Loops (HoDoKu will show an AIC only, if it provides more than one elimination; AICs with only one elimination are always shown as Discontinuous Nice Loops)."
unfortunately it doesn't work that way, each technique set has a limitation on what it can eliminate and how it finds each: meaning it has multiple depth lengths and run times and cant actually find every elimination with out becoming even more complicated, which increases run time, even hodkou is programed to find every elimination within the scope of the name techniques abilities see above.
from a manual point of view: you might not see this side of it until you attempt to program it as described by the originator of the technique.
- Code: Select all
.---------------------------------.---------------------------------.---------------------------------.
| 123456789 12 123456789 | 123456789 123456789 123456789 | 123456789 24 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
:---------------------------------+---------------------------------+---------------------------------:
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
| 123456789 13 123456789 | 123456789 123456789 123456789 | 123456789 34 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
:---------------------------------+---------------------------------+---------------------------------:
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
'---------------------------------'---------------------------------'---------------------------------'
this is a 4 cell xy-chain
visually as a manual solver i can see all the elimination it makes show cased easiest in ALS-xz double linked Rule
Almost Locked Set XZ-Rule: A=r15c2 {123}, B=r15c8 {234}, X=2,3 => r5c1345679<>3, r1c1345679<>2, r2346789c2<>1, r2346789c8<>4
however
Aic's & xy-chains need 4 to accomplish the same task {note: the xy-chain is exactly the same as the aic : xy-chains are Aic's and are constructed purely off bi-vavle cells.
AIC: 2 2- r1c2 -1- r5c2 -3- r5c8 -4- r1c8 -2 => r1c1345679<>2
AIC: 3 3- r5c2 -1- r1c2 -2- r1c8 -4- r5c8 -3 => r5c1345679<>3
AIC: 1 1- r1c2 -2- r1c8 -4- r5c8 -3- r5c2 -1 => r2346789c2<>1
AIC: 4 4- r1c8 -2- r1c2 -1- r5c2 -3- r5c8 -4 => r2346789c8<>4
im not even going to list discontinuous nice loops as there is 28 different ones for it.
AIc's with 1 elimination are possible
- Code: Select all
.---------------------------------.---------------------------------.---------------------------------.
| 123456789 12 123456789 | 123456789 123456789 123456789 | 123456789 24 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 12356789 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 12356789 123456789 |
:---------------------------------+---------------------------------+---------------------------------:
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 12356789 123456789 |
| 123456789 13 123456789 | 123456789 123456789 123456789 | 123456789 34 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 12356789 123456789 |
:---------------------------------+---------------------------------+---------------------------------:
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 12356789 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 12356789 123456789 |
'---------------------------------'---------------------------------'---------------------------------'
AIC: 4 4- r1c8 -2- r1c2 -1- r5c2 -3- r5c8 -4 => r7c8<>4
{seems to be a labeling issue on hodoku as it misses it but still lists the xy-chain for it which is an aic }
Like I said, I'm only talking about manual solving here. While coding is interesting as well, what works there is hardly relevant to human solving.
you really should read up on obiwans approach to fish finding, it has huge implications as a manual solver and makes complicated fish actually easy.
these are named solving techniques.
Nice loops (discontinuous/continuous}
grouped nice loops (discontinuous/continuous}
A.I.C (alternative interface chain)
xy - chain
X-cycle
guess your biggest concern is why are the named techniques called "cycles,loops and chains". the difference is how they are coded! to function and what they can and cannot use to make the elimination.
for you its probably easier just to label everything "chain" and ignore the names, as that is what they all are and to install a single set of complex elimination rules. {manually}
instead of noting each of there limitations out lined below.
Nice loops (discontinuous/continuous}: strong -> weak link interfaces {bi locals only} on N+ digits
grouped nice loops (discontinuous/continuous} strong -> weak link interfaces {bi locals} & Grouped strong -> grouped weak interfaces on N+ digits
A.I.C (alternative interface chain) strong -> weak link interfaces & Grouped strong -> grouped weak interfaces where the weak interface is a digit change on a
bivalve cell on N+ digits
xy - chain : strong-weak interface on
bivalve cells only on N+ digits
X-cycle single digit: strong - weak-link interface and cannot use grouped nodes
for example x-cycles wont find the finned x-wing below.
Finned X-Wing: 2 c28 r25 fr1c2 fr3c2 => r2c13<>2
- Code: Select all
.---------------------------------.---------------------------------.---------------------------------.
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
:---------------------------------+---------------------------------+---------------------------------:
| 123456789 13456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
| 123456789 123456789 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
| 123456789 13456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
:---------------------------------+---------------------------------+---------------------------------:
| 123456789 13456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
| 123456789 13456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
| 123456789 13456789 123456789 | 123456789 123456789 123456789 | 123456789 13456789 123456789 |
'---------------------------------'---------------------------------'---------------------------------'
the other question was what is discontinuous and what is Continuous ie a real " loop or Ring"
discontinuous : start and end points are not peers of each other or start and end points are peers of each other and they do not share a common candidate that reduce the other to a single
continuous: start and end points are peers of each other and they do share a common candidate that reduce the other to a single then it is continuous {making the entire construct strong links}
here is a example of a continuous Nice loop
M-RINGS: wont matter which cell you start on the last cell resolved is always a peer of the first cell hence the name "ring" and it is a continuous nice loop"
- Code: Select all
Type A:
. -a . | . / . | . . .
-b ab -b |-b b -b |-b -b -b
. -a . | . / . | . . .
------------+----------+---------
. -a . | . / . | . . .
/ a / | / ab+ / | / / /
. -a . | . / . | . . .
------------+----------+---------
. -a . | . / . | . . .
. -a . | . / . | . . .
. -a . | . / . | . . .
In addition, r5c5=ab
r2c2 -a- r5c2 =a= r5c5 =b= r2c5 -b- r2c2 - continuous loop
- Code: Select all
.---------------------------------.---------------------------------.---------------------------------.
| 123456789 123456789 123456789 | 123456789 13456789 123456789 | 123456789 123456789 123456789 |
| 123456789 12 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
| 123456789 123456789 123456789 | 123456789 13456789 123456789 | 123456789 123456789 123456789 |
:---------------------------------+---------------------------------+---------------------------------:
| 123456789 123456789 123456789 | 123456789 13456789 123456789 | 123456789 123456789 123456789 |
| 23456789 123456789 23456789 | 23456789 123456789 23456789 | 23456789 23456789 23456789 |
| 123456789 123456789 123456789 | 123456789 13456789 123456789 | 123456789 123456789 123456789 |
:---------------------------------+---------------------------------+---------------------------------:
| 123456789 123456789 123456789 | 123456789 13456789 123456789 | 123456789 123456789 123456789 |
| 123456789 123456789 123456789 | 123456789 13456789 123456789 | 123456789 123456789 123456789 |
| 123456789 123456789 123456789 | 123456789 13456789 123456789 | 123456789 123456789 123456789 |
'---------------------------------'---------------------------------'---------------------------------'
Continuous Nice Loop: 1/2/3/4/5/6/7/8/9 2= r5c5 =1= r5c2 -1- r2c2 -2- r2c5 =2= r5c5 =1 => r1346789c2<>1, r2c1346789<>2, r5c5<>3, r5c5<>4, r5c5<>5, r5c5<>6, r5c5<>7, r5c5<>8, r5c5<>9
example of a {discontinuous Nice Loop}
M-wing
- Code: Select all
ype 1A: Type 1B:
. . . | . . . | . . . . . . | . / . | . . .
. ab . | . . . | . -b . . ab . | . a . | . -b .
. . . | . . . | . . . . . . | . / . | . . .
----------+----------+--------- ----------+----------+---------
. . . | . . . | . . . . . . | . / . | . . .
/ a / | / ab+ / | / b / / / / | / ab+ / | / b /
. . . | . . . | . . . . . . | . / . | . . .
----------+----------+--------- ----------+----------+---------
. . . | . . . | . . . . . . | . / . | . . .
. . . | . . . | . . . . . . | . / . | . . .
. . . | . . . | . . . . . . | . / . | . . .
1A: r2c8 -b- r2c2 -a- r5c2 =a= r5c5 =b= r5c8 -b- r2c8 --> r2c8<>b
1B: r2c8 -b- r2c2 -a- r2c5 =a= r5c5 =b= r5c8 -b- r2c8 --> r2c8<>b
- Code: Select all
.---------------------------------.---------------------------------.---------------------------------.
| 123456789 123456789 123456789 | 123456789 23456789 123456789 | 123456789 123456789 123456789 |
| 123456789 12 123456789 | 123456789 123456789 123456789 | 123456789 123456789 123456789 |
| 123456789 123456789 123456789 | 123456789 23456789 123456789 | 123456789 123456789 123456789 |
:---------------------------------+---------------------------------+---------------------------------:
| 123456789 123456789 123456789 | 123456789 23456789 123456789 | 123456789 123456789 123456789 |
| 3456789 13456789 3456789 | 3456789 123456789 3456789 | 3456789 23456789 3456789 |
| 123456789 123456789 123456789 | 123456789 23456789 123456789 | 123456789 123456789 123456789 |
:---------------------------------+---------------------------------+---------------------------------:
| 123456789 123456789 123456789 | 123456789 23456789 123456789 | 123456789 123456789 123456789 |
| 123456789 123456789 123456789 | 123456789 23456789 123456789 | 123456789 123456789 123456789 |
| 123456789 123456789 123456789 | 123456789 23456789 123456789 | 123456789 123456789 123456789 |
'---------------------------------'---------------------------------'---------------------------------'
Discontinuous Nice Loop: 2 r2c8 -2- r2c2 -1- r5c2 =1= r5c5 =2= r5c8 -2- r2c8 => r2c8<>2
Discontinuous Nice Loop: 2 r2c8 -2- r2c2 -1- r2c5 =1= r5c5 =2= r5c8 -2- r2c8 => r2c8<>2