richardm wrote:For the record, I solved the AA problem by noting that:
...
r4c8 cannot be 8 becuase 8 is in either r4c2 or r4c6 since 3 in r4c2=>r6c3=8=>r5c1=7=>r56c6 cannot be 8
Firstly I notice that you use a different indexing system on rows...
Most people index them 1..9 from top to bottom, but you do it from bottom to top!
IMHO the politically correct way is to do what everybody does, namely r1=top row, r9=bottom row...
(No matter how much you love the game of chess you cannot apply its notation on every other game!
)
Your move, with some alteration, could be expressed as a forcing chain using the nice loop notation:
- Code: Select all
*-----------------------------------------------------------*
| 6 4 1 | 3 8 2 | 5 7 9 |
| 2 59 59 | 1 7 4 | 6 38 38 |
| 8 37 37 | 56 9 56 | 4 1 2 |
|-------------------+-------------------+-------------------|
| 5 1 *78 | 47 3 68 | 9 2 468 |
|*79 2 6 | 47 1 *89 | 3 5 *48 |
| 39 *38 4 | 56 2 5689 | 1 -68 7 |
|-------------------+-------------------+-------------------|
| 4 6 2 | 8 5 3 | 7 9 1 |
| 1 359 359 | 2 6 7 | 8 4 35 |
| 37 3578 3578 | 9 4 1 | 2 36 356 |
*-----------------------------------------------------------*
[r6c8]-8-[r6c2]=8=[r4c3]=7=[r5c1]=9=[r5c6]=8=[r5c9]-8-[r6c8]
i.e.
r6c8=8 => r6c2<>8(=3) => r4c3=8(<>7) => r5c1=7(<>9) => r5c6=9(<>8) => r5c9=8
=> Contradiction: two 8s in b6 (r6c8 & r5c9)!
And although rep'nA has more or less answered your question... Here is what I prepared to reply to you 2 days ago but didn't get to do so:
richardm wrote:Your xy-wing move seems to be what I used without understading that it was a generalized move. However even that troubles me since the proof of the move requires proof by contradiction, which istelf requires a hypothesis (or assumption) to be tested.
Perhaps I presented it in a way that lead you to think it's proof by contradiction... How about this way?
- Code: Select all
*-----------------------------------------------------------*
| 6 4 1 | 3 8 2 | 5 7 9 |
| 2 59 59 | 1 7 4 | 6 38 38 |
| 8 37 37 | 56 9 56 | 4 1 2 |
|-------------------+-------------------+-------------------|
| 5 1 *78 | 47 3 -68 | 9 2 468 |
|*79 2 6 | 47 1 *89 | 3 5 48 |
| 39 38 4 | 56 2 5689 | 1 68 7 |
|-------------------+-------------------+-------------------|
| 4 6 2 | 8 5 3 | 7 9 1 |
| 1 359 359 | 2 6 7 | 8 4 35 |
| 37 3578 3578 | 9 4 1 | 2 36 356 |
*-----------------------------------------------------------*
r5c1={79} "sees" both r4c3={78} and r5c6={89}
Whatever value r5c1 turns out to be, one of r4c3 and r5c6 must become an 8
Therefore all other cells which "see" both r4c3 and r5c6 must not be 8
r4c6 "sees" both r4c3 and r5c6, therefore it must not be 8, and must be 6
Sounds better?
And the way to "spot" these XY-wings is:
1. Scan the grid for bivalue cells
2. For each bivalue cell {XY}, look for 2 other bivalue cells {XZ} and {YZ} which both "sees" the {XY} cell
3. Now look at all other cells which "see" both the {XZ} and {YZ} cells
4. Eliminate Z from those cells (possibly a maximum of 5)
Because of the systematic way to spot this move, not many people would call it "assumption-based"...
Let's look at another example... Consider this very simple turbot fish:
- Code: Select all
. . . | . # . | . . .
3 4 5 |*12 6 7 | 8 *12 9
. . . | . # . | . . .
---------+---------+---------
. . . | # . . | . . .
. . . | # . . | . . .
9 8 7 | 6 *13 5 | 4 *13 2
---------+---------+---------
. . . | . . . | . . .
. . . | . . . | . . .
. . . | . . . | . . .
Candidate 1 may be eliminated from the # cells... Why?
Suppose one of the # cells contain a 1, then r2c4 will be forced to 2 and r6c5 will be forced to 3, and we will be forced to have two 1s on c8 (r26c8)!
Therefore all the # cells cannot be 1...
The above reasoning sounds awfully like trial-and-error/assumptions/proof-by-contradiction, right?
How about another angle:
r2c8 and r6c8 cannot both be 1 (obviously).
Therefore either r2c8=2 or r6c8=3 (or both).
No matter which case turns out to be true, at least one of r2c4 and r6c5 must be 1.
Therefore all the # cells, "seeing" both r2c4 and r6c5, cannot be 1.
The above 4 lines are just logical reasoning based on observations... And now would you still think this move is "assumption-based"?
richardm wrote:To me it seems to be a very fine line as to whether one type of assumption-based move is allowed and another is not.
Is there any guidance on this from Pappocom?
The fine line is different according to each solver and each program... Pappocom seems to cut it after X-wings/Swordfish etc while Simple Sudoku seems to extend to Colors/Multi-colors/XY-wings...
My own view is: those moves that involve more than 1 digits on more than 1 units (row/column/box) are "advanced"...
So: Naked/hidden singles are not because they involve 1 digit on 1 unit
Subsets (naked/hidden pairs/triples/quads) are not because they involve multiple digits on 1 unit
Locked candidates, fishes (X-wings/Swordfish/Jellyfish), turbot/finned fishes, colors/multi-colors are not because they involve 1 digit on multiple units
But, XY-wings/XYZ-wings/... or forcing chains or almost locked sets or the newly introduced "advanced locked candidates" etc are advanced because they involve multiple digits on multiple units...
(My definition includes even the "remote pairs" which many players regard as quite easy to spot...)
Note that uniqueness-based moves such as Unique Rectangles/Unique Loops/BUGs (Bivalue Universal Graves) belong to another class which might be used subjected to personal preference...
This post is a very good starting point if you want to get to know about the various techniques developed by the experts here...