Amazingly, I found that
arcilla's approach works quite effectively in this particular puzzle.
First of all, we need to construct the "appearance tables" listing the appearances of each digit (d1..d9) on each row (r1..r9) or column (c1..c9) as below:
- Code: Select all
c1 c2 c3 c4 c5 c6 c7 c8 c9
-----------------------------------------------------------------------------
d1: 1 579 458 2 478 579 89 6 3
d2: 46 12 7 148 2468 1256 3 45 9
d3: 34 8 15 6 37 19 59 2 47
d4: 5 12379 128 13789 2378 4 6 1789 278
d5: 2 4 9 5 1 8 7 3 6
d6: 3678 123679 1268 13789 5 12379 12489 14789 2478
d7: 9 12356 12456 13478 234678 123567 12458 14578 2478
d8: 4678 679 3 14789 24678 12679 1289 1789 5
d9: 34678 23567 24568 34 9 2356 458 4578 1
d1 d2 d3 d4 d5 d6 d7 d8 d9
-----------------------------------------------------------------------------
r1: 1 246 36 2348 5 234678 234678 4678 9
r2: 4 256 8 2359 1 23679 235679 567 236
r3: 9 7 15 245 8 1246 2456 3 1246
r4: 35 1458 19 6 2 789 345789 145 13478
r5: 236 68 37 1 4 5 23678 9 23678
r6: 8 156 4 7 9 123 2356 1256 1236
r7: 256 3 59 24589 7 124689 45689 124568 128
r8: 357 45 2 34589 6 134789 45789 14578 1378
r9: 267 9 67 248 3 24678 1 24678 5
Here is an important special property about these tables:
For each digit, within each mini-row/mini-column, the digit must not appear more than once on each of the same group of {123}, {456} or {789}.
(Otherwise on the actual sudoku board we'll see the digit appearing twice or more within the same 3x3 block.)As an example, consider the appearances of 3 along the columns:
- Code: Select all
c1 c2 c3 c4 c5 c6 c7 c8 c9
-----------------------------------------------------------------------------
d3: 34 8 15 6 *37 *19 59 2 47
On c56, there are only 4 different possibilities happening: [31], [39], [71], [79].
But we know [31] & [79] are not allowed (as it would imply two 3s in b2 & b8 respectively).
Therefore only [39] or [71] is possible.
This allows us to perform an ALS-like move on d1 & d3:
- Code: Select all
c1 c2 c3 c4 c5 c6 c7 c8 c9
-----------------------------------------------------------------------------
d1: 1 579 #458 2 #478 579 #89 6 3
d3: 34 8 *15 6 *37 *19 *59 2 47
From the above, d3c56 can only be [39] or [71].
As a result d3c3567 (*) can only be [1395] or [5719]
However, d3c3567=[5719] would force d1c357 to be {48}, 2 appearances on 3 columns, a contradiction.
Hence d3c3567=[1395].
And we can put the digit 3 on r1c3, r3c5, r9c6, r5c7. Then the rest of the puzzle can be solved (relatively) easily.
To represent the above move in ALS-like terms, the two ALSs are respectively d1c357={45789} and d3c37={159}. The restricted commons are 5 (c3) and 9 (c7). And the common to eliminate is d3c56=[71].
Alternatively, we can do this using the row-digit appearance table:
- Code: Select all
d1 d2 d3 d4 d5 d6 d7 d8 d9
-----------------------------------------------------------------------------
r1: 1 246 36 2348 5 234678 234678 4678 9
r2: 4 256 8 2359 1 23679 235679 567 236
r3: 9 7 15 245 8 1246 2456 3 1246
r4: 35 1458 19 6 2 789 345789 145 13478
r5: #236 68 *37 1 4 5 23678 9 23678
r6: 8 156 4 7 9 123 2356 1256 1236
r7: #256 3 *59 24589 7 124689 45689 124568 128
r8: 357 45 2 34589 6 134789 45789 14578 1378
r9: #267 9 *67 248 3 24678 1 24678 5
r79d3 cannot be [56] or [97], so must be [57] or [96].
If r79d3=[57], r579d3=[357] and r579d1 will only be left of 2 columns {26}, a contradiction.
Hence r79d3=[96], and the digit 3 must be in r7c9 & r9c6.
It's a very nice and powerful approach, but perhaps we need more work to formulate it better...
