Hello,
For the discussion on the topic of this thread, following a good advice by SpAce, I am stepping back to:
How manual solvers can spot ALS-xz moves ?
I found the following very interesting threads in this Forum:
*
thread 1*
thread 2I improved considerably my skills in identifying ALS-xz moves. The following text describes my current approach (with explicit mention of sources). Hopefully further contributions from experienced players in this forum will provide other venues.
The very interesting
post by re'born in November 2007 (in this Forum), entitled "Subset Counting & ALS xz-rule: A guide for manual solver", called my attention because I could see his way to identify ALS-xz patterns. A
post by Bud was also interesting in this regard.
After reading that post (by re'born), I decided for a while to focus on only three wings when searching for ALS-xz moves: w-wing, xy-wing and xyz-wing. I did not use subset counting arguments, only the idea of searching for "deformed" wings in the above sense (see post by re'born for a more detailed description on the meaning of "deformed").
I collected more than 60 puzzles and each day would choose at random some for practice working in a plain .txt file.
As one can imagine, when the puzzles had ALS-xz patterns related to wxyz-wings and the like, I had some good chances at spotting them. However, in harder puzzles there are many such number combinations (I mean here cells with 45-49-59 in some degenerate form related to an xy-wing, as described by re'born) and also many ALS-xz moves that did not conform (at least not easily) to any of the above patterns.
Searching further in this forum I found the following suggestion by David Bird. I quote:
Hello Surbier, Manually finding every ALSs opportunity is difficult and tedious as there are so many of them. I find it easier to look for their complements which are almost tuples (pairs, triples, quads). The most common and the most productive are Almost Hidden and Almost Naked Pairs which are what I go for first. Only later if I'm still struggling do I look for the others.
I mark single candidates that if false will leave a pair. I call these triggers as they will lead to either the ALS or the Pair being usable for extending an inference chain. With practice you'll then start to spot almost triples too.
You won't catch every ALS this way, but you'll get most of the useful ones!
(in the
thread 2 already mentioned).
By then, I understood what eleven meant in the last paragraph of his first post (Re: How to find ALSs to build a chain Postby eleven » Sat Jul 25, 2020 10:38 pm), which is essentially the same advice.
The way I understood (and used) that suggestion in my daily practice is described next.
Forcing chains using a locked set argument:
In the following configuration
- Code: Select all
.------------.-------------------.-----------------.
| 4 3 1 | 2 8 57 | 57 9 6 |
| 7 9 8 | 6 35 4 | 1 35 2 |
| 5 2 6 | 1 9 37 | 347 8 47 |
:------------+-------------------+-----------------:
| 9 1 7 | 345 6 8 | 2 345 45 |
| 6 8 45 | 3459 2345 2359 | 3459 7 1 |
| 2 45 3 | 7 1 59 | 8 6 459 |
:------------+-------------------+-----------------:
| 3 7 245 | 459 245 2569 | 4569 1 8 |
| 1 45 9 | 8 457 567 | 4567 2 3 |
| 8 6 245 | 3459 23457 1 | 4579 45 4579 |
'------------'-------------------'-----------------'
a forcing chain, using a key locked set, provides the key cells
for the ALS-xz pattern
* If r6c9 <>9 => r3c9=7 => r1c7,r3c6<>7
* If r6c9 = 9 => r6c6=5 => r1c6=7 => r1c7,r3c6<>7
Thus, r1c7, r3c6 <>7.
The ALS-xz move obtained from these cells is
- Code: Select all
.------------.-------------------.------------------.
| 4 3 1 | 2 8 A57 | 5-7 9 6 |
| 7 9 8 | 6 35 4 | 1 35 2 |
| 5 2 6 | 1 9 3-7 | 347 8 B47 |
:------------+-------------------+------------------:
| 9 1 7 | 345 6 8 | 2 345 B45 |
| 6 8 45 | 459 24 239 | 349 7 1 |
| 2 45 3 | 7 1 A59 | 8 6 B459 |
:------------+-------------------+------------------:
| 3 7 245 | 459 245 2569 | 469 1 8 |
| 1 45 9 | 8 457 56 | 4567 2 3 |
| 8 6 245 | 349 23457 1 | 4579 45 4579 |
'------------'-------------------'------------------'
ALS-xz: A=r16c6 {579}, B=r346c9 {4579}, x=9, z=7 => r1c7, r3c6<>7
In the following configuration for a puzzle in the Puzzle Section of this Forum (Oct 04, 2019)
- Code: Select all
+---------------------+----------------------+-------------------+
| 3456 345 7 | 158 14689 489 | 2 38 369 |
| 2 1 368 | 58 7 89 | 359 4 369 |
| 9 45 468 | 3 468 2 | 57 78 1 |
+---------------------+----------------------+-------------------+
| 37 39 5 | 178 18 6 | 1389 2 4 |
| 347 6 1349 | 178 2 34 | 1389 5 39 |
| 8 2 134 | 9 45 345 | 13 6 7 |
+---------------------+----------------------+-------------------+
| 456 459 469 | 2 59 1 | 37 37 8 |
| 1 8 2 | 6 3 7 | 4 9 5 |
| 35 7 39 | 4 589 589 | 6 1 2 |
+---------------------+----------------------+-------------------+
Searching for an ALS-xz move we see that
if r5c1<>4, then 37 is locked in c1, so r9c1=5 => r9c6<>5 => 89 locked in c6 => r1c6=4 => r5c6<>4
If r5c1=4 then r5c6<>4
Thus, -4 r5c6.
Based on the cells involved (4 in r5c1 being the trigger), the following ALS-xz move was found
- Code: Select all
+---------------------+----------------------+-------------------+
| 3456 345 7 | 158 14689 a489 | 2 38 369 |
| 2 1 368 | 58 7 a89 | 359 4 369 |
| 9 45 468 | 3 468 2 | 57 78 1 |
+---------------------+----------------------+-------------------+
|b37 39 5 | 178 18 6 | 1389 2 4 |
|b347 6 1349 | 178 2 3-4 | 1389 5 39 |
| 8 2 134 | 9 45 345 | 13 6 7 |
+---------------------+----------------------+-------------------+
| 456 459 469 | 2 59 1 | 37 37 8 |
| 1 8 2 | 6 3 7 | 4 9 5 |
|b35 7 39 | 4 589 a589 | 6 1 2 |
+---------------------+----------------------+-------------------+
ALS-xz A=r129c6{4589}, B=r459c1{3457}, x=5, z=4.
This key locked set is found by considering every trivalued cell in the puzzle, searching for triggers (as described by David Bird).
In the above puzzle 9 in r6c9 is a trigger. For me this is much easier to find than searching for "deformed" wings and may enable one to spot ALS-xz moves that aren't close to some wing.
For the puzzle (from Puzzle Section Mon Jan 30, 2017)
- Code: Select all
+-------------------+---------------------+------------------------+
| 2 4 689 | 5 679 167 | 689 16 3 |
| 3 5 69 | 8 2469 1246 | 269 7 169 |
| 689 7 1 | 3 269 26 | 4 256 5689 |
+-------------------+---------------------+------------------------+
| 579 13 2459 | 6 2347 247 | 2579 8 1459 |
| 679 13 2469 | 124 5 8 | 2679 12346 1469 |
| 567 8 2456 | 124 2347 9 | 2567 123456 1456 |
+-------------------+---------------------+------------------------+
| 58 2 3 | 9 468 46 | 1 45 7 |
| 1 6 7 | 24 248 5 | 3 9 48 |
| 4 9 58 | 7 1 3 | 568 56 2 |
+-------------------+---------------------+------------------------+
I looked for a forcing chain using a locked set argument somewhere and found one as follows:
if r3c8<>2, then {56} is locked at r39c8 => r7c8=4 => r7c6=6 => r3c6 =2 => -2 r3c5
(2 is a trigger in r3c8)
This was enough to get cells for an ALS-xz move
- Code: Select all
+-------------------+---------------------+------------------------+
| 2 4 689 | 5 679 17-6 | 689 1-6 3 |
| 3 5 69 | 8 2469 124-6 | 269 7 169 |
| 689 7 1 | 3 -269 ^26 | 4 #256 5689 |
+-------------------+---------------------+------------------------+
| 579 13 2459 | 6 2347 247 | 2579 8 1459 |
| 679 13 2469 | 124 5 8 | 2679 1234-6 1469 |
| 567 8 2456 | 124 2347 9 | 2567 1234-56 1456 |
+-------------------+---------------------+------------------------+
| 58 2 3 | 9 68-4 ^46 | 1 #45 7 |
| 1 6 7 | 24 248 5 | 3 9 48 |
| 4 9 58 | 7 1 3 | 568 #56 2 |
+-------------------+---------------------+------------------------+
ALS-xz: A=r396c8 {2456} , B= r73c6 {246}, x=2,4, z= 2,5,6
Using an Example from Hodoku tutorial (saved among the set of 60+ puzzles for practice)
(btw, I was amazed when noticed that the pictures in the site of Hodoku tutorial
allow for copying and pasting in text form)
- Code: Select all
.-------------------.-------------------.---------------------.
| 158 9 3 | 4 12 7 | 258 6 28 |
| 4 68 168 | 38 12 5 | 9 237 278 |
| 58 2 7 | 6 39 389 | 358 4 1 |
+-------------------+-------------------+---------------------+
| 378 3678 468 | 39 3469 123469 | 1236 1239 5 |
| 9 1 46 | 5 346 2346 | 2367 8 2467 |
| 2 356 456 | 7 8 13469 | 136 139 469 |
+-------------------+-------------------+---------------------+
| 6 378 189 | 2 5 389 | 4 179 789 |
| 1378 4 12589 | 389 3679 3689 | 12678 12579 26789 |
| 78 578 2589 | 1 4679 4689 | 2678 2579 3 |
'-------------------'-------------------'---------------------'
When searching for a forcing chain using an locked set argument, I noticed that if r7c2 <>3, then because of the naked pair 78 in b7, we have -8 r789c3. If r7c2=3, then r6c2<>3, which creates a locked set 456 at b4p689, which implies that r4c3=8, so -8 r789c3.
This forcing chain argument provides the cells for an ALS-xz move:
- Code: Select all
.-----------------------.-------------------.---------------------.
| 158 9 3 | 4 12 7 | 258 6 28 |
| 4 68 168 | 38 12 5 | 9 237 278 |
| 58 2 7 | 6 39 389 | 358 4 1 |
+-----------------------+-------------------+---------------------+
| 378 3678 A468 | 39 3469 123469 | 1236 1239 5 |
| 9 1 A46 | 5 346 2346 | 2367 8 2467 |
| 2 A356 A456 | 7 8 13469 | 136 139 469 |
+-----------------------+-------------------+---------------------+
| 6 B378 1-89 | 2 5 389 | 4 179 789 |
| 1378 4 125-89 | 389 3679 3689 | 12678 12579 26789 |
| B78 578 25-89 | 1 4679 4689 | 2678 2579 3 |
'-----------------------'-------------------'---------------------'
ALS-xz: A=r456c3,r6c2 {34568}, B=r7c2,r9c1 {378}, x=3, z=8 => r789c3<>8
One could think of an "degenerate" xyz-wing (looking at 78 and 378
in block 7), but the ALS-xz move is much harder to spot this way.
For the puzzle considered in my first post (How to find ALSs to build a chain
Postby jco » Sat Jul 25, 2020 4:12 am; this Thread) on this topic
- Code: Select all
.----------------.----------------.------------------.
| 3 46 1468 | 468 7 5 | 2689 129 1269 |
| 4568 9 2 | 468 68 1 | 7 35 356 |
| 568 7 1568 | 2 3 9 | 68 4 156 |
:----------------+----------------+------------------:
| 4569 3 456 | 1 246 26 | 69 7 8 |
| 4689 2 468 | 7 46 38 | 1 359 3569 |
| 7 1 68 | 5 9 38 | 4 23 236 |
:----------------+----------------+------------------:
| 2 8 9 | 3 1 4 | 5 6 7 |
| 146 46 7 | 9 5 26 | 3 8 12 |
| 16 5 3 | 68 268 7 | 29 129 4 |
'----------------'----------------'------------------'
if r9c6<>2 => 68 is locked at c5 => -6 r4c5
if r9c6=2 => r9c7=9 => r4c7=6 => -6r4c5
Then, using those cells:
- Code: Select all
.----------------.----------------.------------------.
| 3 46 1468 | 468 7 5 | 2689 129 1269 |
| 4568 9 2 | 468 A68 1 | 7 35 356 |
| 568 7 1568 | 2 3 9 | 68 4 156 |
:----------------+----------------+------------------:
| 4569 3 456 | 1 24-6 26 | B69 7 8 |
| 4689 2 468 | 7 46 38 | 1 359 3569 |
| 7 1 68 | 5 9 38 | 4 23 236 |
:----------------+----------------+------------------:
| 2 8 9 | 3 1 4 | 5 6 7 |
| 146 46 7 | 9 5 26 | 3 8 12 |
| 16 5 3 | 68 A268 7 | B29 129 4 |
'----------------'----------------'------------------'
ALS-xz: A=r29c5 {268}, B=r49c7 {269}, x=2, z=6 => r4c5<>6
(in this case one may see first 68 at r2c5 and 268 at r9c5, and search for 26,
that appears as 2(9)-(9)6 if viewed as a "deformed" xyz-wing)
However, in the same puzzle another ALS-xz move seems to require a BCV for the trigger
- Code: Select all
.-------------------.--------------.------------------.
| 3 46 1468 | 468 7 5 | 2689 129 1269 |
| 4568 9 2 | 468 68 1 | 7 35 356 |
| 568 7 156-8 | 2 3 9 | A68 4 156 |
:-------------------+--------------+------------------:
| B4569 3 B456 | 1 246 26 | A69 7 8 |
| 4689 2 B468 | 7 46 38 | 1 359 3569 |
| 7 1 B68 | 5 9 38 | 4 23 236 |
:-------------------+--------------+------------------:
| 2 8 9 | 3 1 4 | 5 6 7 |
| 146 46 7 | 9 5 26 | 3 8 12 |
| 16 5 3 | 68 268 7 | 29 129 4 |
'-------------------'--------------'------------------'
ALS-xz: A=r34c7 {689}, B=r4c13,r56c3 {45689}, x=9, z=8 => r3c3<>8
Starting with BVCs search first,
if r3c7=8 => r3c3<>8
if r3c7<>8 => r3c7=6=> r4c7=9 =>r4c1<>9 =>r5c1=9 => either r5c3 or r5c3 is 8 => r3c3<>8,
which produces the cells for the above ALS-xz move.
Other ALS-xz move in this puzzle: A=r5c35 {468}, B=r6c3 {68}, x=8, z=6 => r5c1<>6
also seems to require a forcing argument from r5c5<>4 => r5c5=6 => r5c1<>6
r5c5=4 => 68 locked in b4 => r5c1<>6
to find the right cells for the ALS-xz move.
To conclude:
It is easier to look for trivalued cells such that, when removing certain digit, a locked set argument follows which indicates some possible elimination( if no trivalued cell is found, I search for BVCs instead). If that elimination already happens when the digit previously considered off is now considered on, this forcing chain argument (may) provide cells for an ALS-xz move.
The real work involved is only in one part: finding the right trivalued cell to construct the forcing chain that has an locked set argument in it.
In my firt post on this subject, I tried to use a forcing chain that would somehow provide the cells for a possible ALS move.
But, first, that was not a forcing chain (as eleven pointed out at that time), and second, it didn't use any locked set argument.
Using this simple procedure, it's being a while since the last time I failed to find an ALS-xz move in my daily practice.
Finally, one can argue: why do you need the ALS-xz move, if you already proved the elimination using a forcing chain argument?
I do consider ALS-xz moves on a higher level than forcing chains. Hodoku tutorial places forcing chains in the "last resort" section.
So, I'd rather justify the elimination using an ALS-xz move. However, whenever I see a one-step solution to an Extreme puzzle using a kraken move, or another clever forcing chain argument, I am always impressed by its precison, elegance and power!
Anyway, the goal was to find a way to help a manual solver to spot ALS-xz patterns and this is the issue addressed here.
This simple way to spot ALS-xz moves was first noticed when I read the suggestion given by David Bird, quoted above, but eleven (eleven » Sat Jul 25, 2020 10:38 pm) had given the same advice in his reply to my first post in this thread, but I did not get it at that time.
I quote the conclusion of re'born post
... In any case, hopefully this presentation helps somebody understand a little better how to manually spot ALS style reductions and perhaps it will inspire others to share their tricks, especially for the more complicated set-ups.
Reinforcing this, I thank in advance any contribution on this topic.
Can colouring techniques help finding ALS-xz patterns?
Regards,
jco.
PS: I would like to thank again SpAce for his generous explanations, comments and suggestions in the last post.
[Edited again to include links and make small corrections accordingly]