Hi Phil,
before trying to give another view of the "add cells" logic, some preliminary remarks;
a) Golden Nugget is not a good start. You come to a rank 1 logic, nobody so far could do more.
b) leren first worked on non overlapping rank 1 logic. In that case, all potential eliminations are valid except one, but we have normally no clue to tell which one is wrong.
Back to your question, a topic on which I am also currently working.
I have no general rule to extract a rank 0 logic, but some partial strategies using a starting pattern.
The MSLS target is one of the possible strategies.
In that case I start from a matrix "n rows p columns" and from a split of digits say "A" in rows and "B" in columns.
For each sub group ("A" + n), ("B" +p) the covering strategy is very similar to a start using a row base or a column base in a multi fish study.
My underlying logic, to find an existing rank 0 logic is the following (it does not guaranty that you'll get it as I'll show below)
if in the vicinity analysis you can define a best cover, you must use it. If you miss it, then you miss the rank 0 logic.
Let me illustrate that principle on an example where we have a very simple row base example recently posted by JC VAN HAY
- Code: Select all
9..8..7...8..9..6...5..4..38..4..6...7..2..8...3..8..51...4.2...6.9...1...7......
A B C |D E F |G H I
9 1234 1246 |8 1356 12356 |7 245 124
2347 8 124 |12357 9 12357 |145 6 124
267 12 5 |1267 167 4 |8 9 3
-------------------------------------------------
8 1259 129 |4 1357 13579 |6 237 1279
456 7 1469 |1356 2 13569 |1349 8 149
246 1249 3 |167 167 8 |149 247 5 <<
-------------------------------------------------
1 359 89 |3567 4 3567 |2 357 6789 <<
2345 6 248 |9 3578 2357 |345 1 478
2345 23459 7 |12356 13568 12356 |3459 345 4689 <<
AA AA AA
here we have here a MSLS
- Code: Select all
17 Truths = {6N124578 7N2468 9N1245678 }
17 Links = {1r69 2r69 3r79 4r69 5r79 6r6 6b8 7r67 8c5 9c27 }
5 elims 4r9c9 7r7c9 8r8c5 9r4c2 9r5c7
My solver started on a matrix 3x3 rows 6 7 9 columns 2 5 7
with digits 89 cover in column and other digits in rows.
note: we have 3 empty cells in the base matrix
Let's study the row cover.
- Code: Select all
row 6 cells r6c2 r6c5 r6c7 digits 12467 (5 links)
in that row, we have 3 extra cells without the digits 8,9 r6c1=246 r6c4=167 r6c8=247
these cells containing only digits of the lot 12467 can (must) be added as truths.
The final balance is 5 links - 3 additional truths
row 7 cell r7c2 digits 35 (2 links)
in that row, we have 3 extra cells without the digits 8,9 r7c4=3567 r7c6=3567 r7c8=357
but adding these cells as truths, me must add digits 67 as links
the balance is positive, we must do it
row 9 cells r9c2 r9c5 r9c7 digits 123456 (6 links)
in that row, we have 4 extra cells without the digits 8,9 r9c1=2345 r9c4=12356 r9c6=12356 r9c8=345
these cells containing only digits of the lot 123456 can (must) be added as truths.
The final balance is 6 links - 4 additional truths
At that point, the rank is 1. It will be still necessary to optimise the band 3, replacing the links 6r7 and 6r9 by the link 6b8.
Note, it can be in the situation seen in row 7, that the balance is negative. Then we can not add cells. We can foresee a situation where the use of only part of the extra cells gives a positive (or neutral) balance;
But the vicinity optimisation is not always the right way to build an active rank 0 logic.
On the same puzzle, I'll comment the row based logic proposed by JC
- Code: Select all
A B C |D E F |G H I
9 1234 1246 |8 1356 12356 |7 245 124
2347 8 124 |12357 9 12357 |145 6 124
267 12 5 |1267 167 4 |8 9 3
-------------------------------------------------
8 1259 129 |4 1357 13579 |6 237 1279
456 7 1469 |1356 2 13569 |1349 8 149
246 1249 3 |167 167 8 |149 247 5 <<
-------------------------------------------------
1 359 89 |3567 4 3567 |2 357 6789 <<
2345 6 248 |9 3578 2357 |345 1 478
2345 23459 7 |12356 13568 12356 |3459 345 4689 <<
All Rows Loop[6] : {6R79 8R7 9R679} - {9c27 7n3 79n9 6b8}
5 Eliminations --> r9c9<>48, r4c2<>9, r5c7<>9, r7c9<>7
This is a multi fish pattern not directly produced by my solver. Digit 6 is ignored in row 6, digit 8 is ignored in row 9. My solver does not accept that.
I see one theoretical way to produce it using my lay-out:
you start of a with 2 rows 79 and the digits 69 (4 truths)
you do the cover proposed by JC (6 links)
you then look for possibility to add truths in 2 ways
. extra digit (8) in an existing row (7) covering cells used as link (r7c39)
. digit(9) in an extra row (6) having only candidates (9r6c27) belonging to links
This would be nice but my vicinity optimisation in that case would suggest
use of 9B7 instead of 9r2+7n3
use of 89b9 instead of 9c7 79n9.
At the end, my process would find a 4truths 4links logic with no elimination.
Adding flexibility in the lay-out means adding complexity, and as noticed david what is easy for a player is not always easy to code.