Maybe you've read in the Programmer's forum about my rules regarding Ultimate Fish. Experimenting with these patterns for a while now, I've come to the conclusion that it can all be put even simpler in just two rules.

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:

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:

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.

3a) Using the results from step (2), examine the candidate grid from your PM.3b) Any candidate cell with a minus value must be empty or treated as a fin cell.3c) Any candidate cell with a plus value can be eliminated -- provided it's seen by all fin cells.

ronk wrote:I just reread Obi-Wahn's rules and don't see that as one of his requirements. On what are you basing that idea?

Obi-Wahn wrote: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.

Obi-Wahn wrote: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.

Obi-Wahn wrote:Now every cell with a negative number must be empty, because a candidate there would violate the construction rule.

Now, since [r1c7] has a value of '-2' but is not empty in the candidate grid, then this cell must be covered with two Cover sectors to meet Obi-Wahn's construction rule. Since [c7] and [b3] are in the Base sectors, that only leaves adding [r1] twice to the Cover set! This changes [r1]'s counts to

daj95376 wrote:Now, since [r1c7] has a value of '-2' but is not empty in the candidate grid, then this cell must be covered with two Cover sectors to meet Obi-Wahn's construction rule. Since [c7] and [b3] are in the Base sectors, that only leaves adding [r1] twice to the Cover set!

I suppose Obi-Wahn's rules might have been intended for an endo-fin cell too, but he never specifically mentions "endo-fin" or "overlap", so I'm skeptical. Before being covered, an endo-fin cell will usually have a count of "-2" ("-3" is also possible) and while I recall endo-finned examples by Obi-Wahn, I don't recall a single example where he listed the same fin sector twice.

There is no requirement for an endo-fin cell to be covered more than once, so it's count can be "adjusted" to "-1".

ronk wrote:There is no requirement for an endo-fin cell to be covered more than once, so it's count can be "adjusted" to "-1".

If we follow all of Obi-Wahn's rules, perform his arithmetic, and follow his interpretation on the resulting values, then it'll take the following N\(N+2) pattern to get [r1c14]<>1 for my candidate grid.

daj95376 wrote:If we follow all of Obi-Wahn's rules, perform his arithmetic, and follow his interpretation on the resulting values, then it'll take the following N\(N+2) pattern to get [r1c14]<>1 for my candidate grid.

I think literal application of Obi-Wahn's rules would fail to find all three eliminations for the single fish shown below. I tend to "read between the lines.", so that makes me a bad proofreader, I suppose.

Yes, you are correct that Obi-Wahn's technique would require two fish to perform the eliminations in your finned pattern. One time he'd cover [r9c8] with +c8, and the next time he'd cover [r9c8] with +b9. He could not add +c8b9 because of his interpretation of the counts. (Fortunately, my N\N variant of his counting technique isn't plagued by this problem.)