Construction rule: We have a Fish pattern if we can construct two sets of sectors, a base set and a cover set, in such a way that every candidate of a given digit belongs to at least as many cover sectors as it belongs to base sectors.
A sector can be any row, column or box. Please note that this rule doesn't require there to be an equal number of base and cover sectors. This way you can handle Finned Fish pretty much the same way you handle Finless Fish. You just cover the fin cells with additonal cover sectors. However the requirement for an exclusion candidate is getting higher in this case.
Now, to decide which candidates can be excluded, we need to know how many excess cover sectors we have. I'll call this the number of fin sectors.
Number of fin sectors = Number of cover sectors - Number of base sectors
With this convention the second rule simply is:
Exclusion rule: Any candidate of the digit in question, whose individual excess number of cover sectors is greater than the number of fin sectors in the pattern, can be eliminated.
With individual excess number of cover sectors I mean the difference between the number of cover sectors and the number of base sectors this candidate belongs to.
Why is this? Every candidate considered to be true removes all sectors it belongs to from both sets. The construction rule makes sure that every candidate removes at least as many cover sectors as it removes base sectors. So if you ever reach a state where there are less cover sectors than base sectors left, the puzzle isn't solvable anymore, because in the end you're either left with a base sector with an empty cell or you have to put more than one instance of the digit into the same cover sector. This leads directly to the exclusion rule, because any candidate whose individual excess number of cover sectors is greater than the excess number of cover sectors in the pattern would leave less cover sectors than base sectors if it was true.
Now, to give an example I'll show how to calculate the hidden pattern from a list of base and cover sectors.
In this case I'll take a pattern from the latest discussion on the Ultimate FISH Guide: r348c8b1/r12c567b9.
This pattern has 5 base and 6 cover sectors and therefore 1 fin sector.
Now the number of base sectors / cover sectors for each possible candidate are:
- Code: Select all
1/1 1/1 1/1 | 0/1 0/2 0/2 | 0/2 1/1 0/1
1/1 1/1 1/1 | 0/1 0/2 0/2 | 0/2 1/1 0/1
2/0 2/0 2/0 | 1/0 1/1 1/1 | 1/1 2/0 1/0
-------------+-------------+-------------
1/0 1/0 1/0 | 1/0 1/1 1/1 | 1/1 2/0 1/0
0/0 0/0 0/0 | 0/0 0/1 0/1 | 0/1 1/0 0/0
0/0 0/0 0/0 | 0/0 0/1 0/1 | 0/1 1/0 0/0
-------------+-------------+-------------
0/0 0/0 0/0 | 0/0 0/1 0/1 | 0/2 1/1 0/1
1/0 1/0 1/0 | 1/0 1/1 1/1 | 1/2 2/1 1/1
0/0 0/0 0/0 | 0/0 0/1 0/1 | 0/2 1/1 0/1
Since we're only interested in the excess number of cover sectors we can subtract the base numbers from the cover numbers:
- Code: Select all
0 0 0 | +1 +2 +2 | +2 0 +1
0 0 0 | +1 +2 +2 | +2 0 +1
-2 -2 -2 | -1 0 0 | 0 -2 -1
----------+----------+----------
-1 -1 -1 | -1 0 0 | 0 -2 -1
0 0 0 | 0 +1 +1 | +1 -1 0
0 0 0 | 0 +1 +1 | +1 -1 0
----------+----------+----------
0 0 0 | 0 +1 +1 | +2 0 +1
-1 -1 -1 | -1 0 0 | +1 -1 0
0 0 0 | 0 +1 +1 | +2 0 +1
Now every cell with a negative number must be empty, because a candidate there would violate the construction rule. And since we have 1 fin sector in this case every candidate with an excess number of at least +2 can be eliminated. This leads to the following hidden pattern:
- Code: Select all
. . . | . * * | * . .
. . . | . * * | * . .
/ / / | / . . | . / /
-------+-------+-------
/ / / | / . . | . / /
. . . | . . . | . / .
. . . | . . . | . / .
-------+-------+-------
. . . | . . . | * . .
/ / / | / . . | . / .
. . . | . . . | * . .
/ = empty cell
. = cell may or may not contain a candidate
* = possible exclusions
Now I want to show how you can construct bigger Fish patterns of smaller Almost Fish.
In the Ultimate FISH Guide the following (Kraken) Jellyfish was supposed for the above pattern:
- Code: Select all
Only the 2s:
2 . . | . . -2 | . *2 2
2 . . | 2 -2 . | . . 2
. . . | . *2 *2 | *2 . .
---------+----------+----------
. . . | . . *2 | #2 . .
. . 2 | 2 . . | 2 . .
. . 2 | 2 . . | . . 2
---------+----------+----------
. . . | 2 . . | -2 *2 .
. . . | . *2 *2 | *2 . *2
. . . | . . . | . . .
jellyfish r348c8\c56b39 plus remote fin r4c7, implies r1c6<>2, r2c5<>2 and r7c7<>2
Now, regarding the exclusions r1c6 and r2c5 I'd like to call the candidate r4c7 an obstacle (for the lack of a better name), because it prevents the Jellyfish and doesn't directly see these exclusion candidates.
However it does see them via the grouped strong link in row 3. This grouped strong link can be viewed as a Cyclopsfish r3\b2 with obstacle r3c7 and potential eliminations r1c6 and r2c45.
These two Almost Fish patterns can be combined into one by simply adding up both base sets and both cover sets. Thereby the individual excess cover numbers also add up. Since the exclusion candidates common to both patterns (r1c6 and r2c5) have an excess cover number of +1 for each individual pattern, these add up to +2 in the combined pattern giving room for one additional cover sector covering the obstacles r3c7 and r4c7: column 7. This yields the combined pattern r3348c8\c567b239.
Please note that my rules don't forbid the same sectors to be added multiple times to the same set. However such a pattern is very abstract and you probably would rather transform it. So as I explained in the Ultimate FISH Guide you can add the same sectors to both the base and the cover set without hurting the pattern. This should also be obvious from the arithmetic I've shown above, because the individual excess cover numbers aren't changed thereby.
So let's add r12 to both sides yielding r123348c8\r12c567b239. Now we can replace r123 by b123, because both sets contain exactly the same candidates, again not changing the individual excess cover numbers. This yields r348c8b123\r12c567b239. Now we can remove b23 from both sides and get r348c8b1\r12c567b9. This is a Mutant Squirmbag with one fin sector that explains all exclusions without a remote fin.
So, I hope I didn't scare you all away. I think with a little practise these arithmetics can make it a lot easier to catch some of the bigger fish or to transform one fish into another. I'm not very creative in inventing names, so if anybody has an idea for a more illustrative name for some of the above, be my guest.