## Big fish

Advanced methods and approaches for solving Sudoku puzzles
Note that in the diagrams, the X's represent swordfish vertices, *'s represent reductions where X's could be removed as candidates. |'s indicate columns where the only X candidates can be in cells marked with either X or #. #'s represent a fin cell which can always contain a candidate X. (.)'s represent swordfish vertices which do not contain a candidate X. Finally, any '.' cell may contain a candidate X so long as it is not proscribed by any aformentioned symbols.

ronk wrote:Isn't there a rule that an "exclusion cell" must see ALL the fin cells?

To answer that properly, we must delve into the evolution of the frankenfish....

Originally there was the swordfish (3x3), and his sealife brethren, the x-wing (2x2) and the jellyfish (4x4), and an extraneous entity known as a squirmbag (5x5).
Code: Select all
` .   .   . | .   .   . | .   .   . *   *   * | X   *   * | X   X   * .   .   . | |   .   . | |   .   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . *   *   * | X   *   * | X   X   * .   .   . | |   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | |   .   . | |   |   . *   *   * | X   *   * | X   X   *`

It was also noted that not every vertex of the swordfish or jellyfish had to be filled, so long as there were at least two in every row and column.
Code: Select all
` .   .   . | .   .   . | .   .   . *   *   * |(.)  *   * | X   X   * .   .   . | |   .   . | |   .   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . *   *   * | X   *   * |(.)  X   * .   .   . | |   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | |   .   . | |   |   . *   *   * | X   *   * | X  (.)  *`

Then came grouped sealife, and, perhaps rumors of a "skinny swordfish". Apparently the researches on this creature were lost, dealing aquatic science a severe blow. All that was left of this important work was the phrase, "This is all I know. A 'skinny' swordfish is 2 row by 3 column, with strong rows and weak columns."

A new branch evolved called the seafood filets which included the x-wing filet, the jellyfish filet, and the swordfish filet...
Code: Select all
` .   .   . | .   .   . | #   #   . .   .   . | X   .   . | X   X   * .   .   . | |   .   . | #   #   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   . .   .   . | |   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   .`

The filets were not nearly as powerful as the older sealife, but, through being very prolific, they established a niche for themselves in the undersea environment. Furthermore, the new sashimi species of the filets could attain forms that were impossible for the older versions of the creatures...
Code: Select all
` .   .   . | .   .   . | #   #   . .   .   . | X   .   . |(.) (.)  * .   .   . | |   .   . | #   #   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   . .   .   . | |   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   .`

Together, the filets and their sashimi cousins were referred to as "finned sealife." Some pretty wild things were discovered, perhaps the most bizarre was a new headless mutation...
Code: Select all
` .   .   . | .   .   . | #   #   . .   .   . |(.)  .   . |(.) (.)  * .   .   . | |   .   . | #   #   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   . .   .   . | |   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   .`

While studying the headless swordfish, and various closely related relatives, it was discovered that an interesting reduction could be made using a superposition of multiple filets on the same grid. For example, this...
Code: Select all
` .   .   . | .   .   . | #   #   . .   .   . | .   .   . | #   #   . .   .   . | .   .   . | #   #   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   . .   .   . | |   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   .`

...equalled this...
Code: Select all
` .   .   . |(.)  .   . | X   X   * .   .   . | |   .   . | #   #   . .   .   . | |   .   . | #   #   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   . .   .   . | |   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   .`

...and also this...
Code: Select all
` .   .   . | .   .   . | #   #   . .   .   . |(.)  .   . | X   X   * .   .   . | |   .   . | #   #   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   . .   .   . | |   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   .`

...and also this as well...
Code: Select all
` .   .   . | .   .   . | #   #   . .   .   . | .   .   . | #   #   . .   .   . |(.)  .   . | X   X   *-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   . .   .   . | |   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   .`

Taken all together, this results in...
Code: Select all
` .   .   . |(.)  .   . | #   #   * .   .   . |(.)  .   . | #   #   * .   .   . |(.)  .   . | #   #   *-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   . .   .   . | |   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   .`

...but that wasn't all. The lack of candidates in r123c4 meant that either x-wing r59c47 or x-wing r59c48 would be valid. Thus any reductions that they would both make would be valid reductions. The fin sort of acted to allow a grouped swordfish which actually allowed the following reductions...
Code: Select all
` .   .   . |(.)  .   . | #   #   * .   .   . |(.)  .   . | #   #   * .   .   . |(.)  .   . | #   #   *-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . *   *   * | X   *   * | X   X   * .   .   . | |   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | |   .   . | |   |   . *   *   * | X   *   * | X   X   *`

Thus, it appears we have rediscovered the "skinny swordfish". Now since the headless, or skinny swordfish stands on its own as a pattern which eliminates candidates in multiple boxes, we can reapply our filet logic to any box containing a reduction and an 'X' and we come up with "frankenfish". Once again, not as powerful as the original it sprang from; but, perhaps, more prevalent. (Note that if you try to apply a filet to box 2&3 and fill in one of the empty cells in box 2 with an X, you just end up with a normal swordfish filet.)

Frankenfish example 1
Code: Select all
` .   .   . |(.)  .   . | #   #   . .   .   . |(.)  .   . | #   #   . .   .   . |(.)  .   . | #   #   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   . .   .   . | |   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | #   #   . .   .   . | |   .   . | #   #   . .   .   . | X   .   . | X   X   *`

Frankenfish example 2
Code: Select all
` .   .   . |(.)  .   . | #   #   . .   .   . |(.)  .   . | #   #   . .   .   . |(.)  .   . | #   #   .-----------+-|---------+-|---|----- .   .   . | #   .   . | |   |   . .   .   . | X   *   * | X   X   . .   .   . | #   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | |   .   . | |   |   . .   .   . | X   .   . | X   X   .`

This is how one might look at a frankenfish as a filet entity with more "fins" than the reduction can "see". If you would rather see the "skinny sealife" as its own finless pattern species and then take filets of that, that is certainly an equally valid viewpoint.

Might be interesting to see if we can form a "headless" franken-jellyfish and then, if it is something new that stands on its own, take more filets of that.
Myth Jellies

Posts: 593
Joined: 19 September 2005

what you can miss in 1 day

I have to be with Ron on the issue that the beauty of finned fish was the simple rule that the elimination should "see" the fin.

The outgrowth of these mutant fins serves a single -but more complex- elimination versus mutiple but simpler eliminations. Which do you prefer ??!!

Another issue was highlighted on the programmers index was that in a true puzzle, several simpler techniques would reduce the need for all these eliminations (e.g. a maximum of 17) to actually 1, which was already there without the need for deep sea monsters

& Ruud, I would be interested to see the puzzles that still needed colouring after passing the finned fish algorithm....

Tarek

tarek

Posts: 2650
Joined: 05 January 2006

tarek wrote:The outgrowth of these mutant fins serves a single -but more complex- elimination versus mutiple but simpler eliminations. Which do you prefer ??!!

That is a very interesting statement! I have always been a very strong beliver in using simple techniques instead of more complex ones. (like the discussions in the Method Hierarchy thread etc.) But I thought these patterns were the simplest available to do what they do? Except for the frankenswordfish that MJ proved was the same as an ER, can you please explain what simpler technique could be used to do the eliminations discussed here?

like this one:
Code: Select all
` .   .   . |(.)  .   . | #   #   .  .   .   . |(.)  .   . | #   #   .  .   .   . |(.)  .   . | #   #   . -----------+-|---------+-|---|-----  .   .   . | #   .   . | |   |   .  .   .   . | X   *   * | X   X   .  .   .   . | #   .   . | |   |   . -----------+-|---------+-|---|-----  .   .   . | |   .   . | |   |   .  .   .   . | |   .   . | |   |   .  .   .   . | X   .   . | X   X   . `

and this:
Code: Select all
`* ? ? | . X . | . X . ? ? ? | . | . | . | . ? ? ? | . | . | . | . --|-|-+---|---+---|-- ? | | | . | . | . | . ? X X | . X . | . X . ? X X | . X . | . X . --|-|-+-------+------ ? ? ? | . . . | . . . ? ? ? | . . . | . . . ? ? ? | . . . | . . . `

havard
Havard

Posts: 377
Joined: 25 December 2005

[quote="Havard"]I hope that these eliminations will count as because they are frightening first & the elimination cells will not see all the fins.

In the hypothetical examples above I couldn't see any simpler ones at all, I thought that the box with "#" will have a line of vertices only, but it turns out they maybe also fins.... that is why I hope they're not considered fish.

Hypothetical until we see some examples, if they reamin so without any examples....I think that probably the deep sea is where they should be............

Tarek

tarek

Posts: 2650
Joined: 05 January 2006

An interesting twist, maybe...

This is the headless creature presented by MJ:

Code: Select all
` .   .   . |(.)  .   . | #   #   *  .   .   . |(.)  .   . | #   #   *  .   .   . |(.)  .   . | #   #   * -----------+-|---------+-|---|-----  .   .   . | |   .   . | |   |   .  *   *   * | X   *   * | X   X   *  .   .   . | |   .   . | |   |   . -----------+-|---------+-|---|-----  .   .   . | |   .   . | |   |   .  .   .   . | |   .   . | |   |   .  *   *   * | X   *   * | X   X   * `

This is the result of template checking digit 1 with the known eliminations:

The funny thing is: We do not need any fin in box 3 to do the eliminations as indicated. It seems to be a variety of the so called 'hidden pattern' that has been posted on these forums a long time ago.

 I found the hidden pattern again. Notice the similarity:

[/edit]

Tarek wrote:I would be interested to see the puzzles that still needed colouring after passing the finned fish algorithm....

Here are a few that still require colouring:

Code: Select all
`074000000003800000100005002500307160000000000062901003900200001000003800000000670 005060700800000004060050020000809000700106005004020600400000009006205800000030000 040201000000000250000040000000004907006000130009000000005700090100908600700002000 200104003007800100000000090100900030000271000000000500030490000000007002006002700`

The last one still requires 4 colouring steps and no fish whatsoever is found.

Ruud.
Ruud

Posts: 664
Joined: 28 October 2005

Havard wrote:
Code: Select all
`* ? ? | . X . | . X . ? ? ? | . | . | . | . ? ? ? | . | . | . | . --|-|-+---|---+---|-- ? | | | . | . | . | . ? X X | . X . | . X . ? X X | . X . | . X . --|-|-+-------+------ ? ? ? | . . . | . . . ? ? ? | . . . | . . . ? ? ? | . . . | . . . `

I don't think all ?s are fins. Should it be like this?

Code: Select all
`* ? ? | . X . | . X . . ? ? | . | . | . | . . ? ? | . | . | . | . --|-|-+---|---+---|-- . | | | . | . | . | . . X X | . X . | . X . . X X | . X . | . X . --|-|-+-------+------ . ? ? | . . . | . . . . ? ? | . . . | . . . . ? ? | . . . | . . . `
Last edited by Jeff on Mon Mar 20, 2006 1:27 am, edited 1 time in total.
Jeff

Posts: 708
Joined: 01 August 2005

Ruud wrote:This is the result of template checking digit 1 with the known eliminations:
Code: Select all
` .   .   . |(.)  .   . | #   #   *  .   .   . |(.)  .   . | #   #   *  .   .   . |(.)  .   . | #   #   * -----------+-|---------+-|---|-----  .   .   . | |   .   . | |   |   .  *   *   * | X   *   * | X   X   *  .   .   . | |   .   . | |   |   . -----------+-|---------+-|---|-----  .   .   . | |   .   . | |   |   .  .   .   . | |   .   . | |   |   .  *   *   * | X   *   * | X   X   * `
The funny thing is: We do not need any fin in box 3 to do the eliminations as indicated.

Hi Rudd, Correct me if I am wrong. While we do not need any fin in box 3 to do the eliminations, one of the #s would have to be 1. So, whether or not we like to call it a fin, this # has to be included as it forms part of the fish pattern.
Jeff

Posts: 708
Joined: 01 August 2005

Ruud wrote:Here are a few that still require colouring:
Code: Select all
`074000000003800000100005002500307160000000000062901003900200001000003800000000670 005060700800000004060050020000809000700106005004020600400000009006205800000030000 040201000000000250000040000000004907006000130009000000005700090100908600700002000 200104003007800100000000090100900030000271000000000500030490000000007002006002700`

The last one still requires 4 colouring steps and no fish whatsoever is found.

I would beg to differ. You just have not concidered the awsome power of FRANKENFISH!

Code: Select all
`. 6 . | . * . | 6 . .# X . | . X . | . . X# X . | . X # | . . X------+-------+------.(X). | . X . | . . X6 6 . | . . . | . 6 66 . . | 6 6 6 | . . .------+-------+------. . . | . . 6 | 6 . .. . . | 6 6 . | . 6 .. . . | . . . | . . .`

Code: Select all
`. X . | . X . | # .(X)# X . | . X . | . . X6 6 . | . 6 6 | . . *------+-------+------.(X). | . X . | . . X6 6 . | . . . | . 6 66 . . | 6 6 6 | . . .------+-------+------. . . | . . 6 | 6 . .. . . | 6 6 . | . 6 .. . . | . . . | . . .`
Havard

Posts: 377
Joined: 25 December 2005

Jeff wrote:
Havard wrote:
Code: Select all
`* ? ? | . X . | . X . ? ? ? | . | . | . | . ? ? ? | . | . | . | . --|-|-+---|---+---|-- ? | | | . | . | . | . ? X X | . X . | . X . ? X X | . X . | . X . --|-|-+-------+------ ? ? ? | . . . | . . . ? ? ? | . . . | . . . ? ? ? | . . . | . . . `

I don't think all ?s are fins.

Apparently that wasn't wholly MJ's intent when he began using '?'s on the grid here. Indeed, replacing '.'s with '?'s in the first row of Havard's diagram (above) might be more in keeping with MJ's initial usage.

Ruud wrote:This is the result of template checking digit 1 with the known eliminations:
Code: Select all
` .   .   . |(.)  .   . | #   #   *  .   .   . |(.)  .   . | #   #   *  .   .   . |(.)  .   . | #   #   * -----------+-|---------+-|---|-----  .   .   . | |   .   . | |   |   .  *   *   * | X   *   * | X   X   *  .   .   . | |   .   . | |   |   . -----------+-|---------+-|---|-----  .   .   . | |   .   . | |   |   .  .   .   . | |   .   . | |   |   .  *   *   * | X   *   * | X   X   * `
The funny thing is: We do not need any fin in box 3 to do the eliminations as indicated.

Hmm! So the requirement for a "skinny swordfish" (defined by columns) seems to be that exactly one of the columns contain a conjugate pair.

Then we know the skinny swordfish must eventually degenerate into a x-wing ... and we can eliminate candidates from any cells of the skinny swordfish which cannot potentially complete an x-wing pattern. That suggests that the "skinny swordfish" can be 3x2, or 4x2, etc.

Hmm, I wonder if that's for real.

Ron
ronk
2012 Supporter

Posts: 4764
Joined: 02 November 2005
Location: Southeastern USA

Havard wrote:I would beg to differ. You just have not concidered the awsome power of FRANKENFISH!

Code: Select all
`. 6 . | . * . | 6 . .# X . | . X . | . . X# X . | . X # | . . X------+-------+------.(X). | . X . | . . X6 6 . | . . . | . 6 66 . . | 6 6 6 | . . .------+-------+------. . . | . . 6 | 6 . .. . . | 6 6 . | . 6 .. . . | . . . | . . .`

Code: Select all
`. X . | . X . | # .(X)# X . | . X . | . . X6 6 . | . 6 6 | . . *------+-------+------.(X). | . X . | . . X6 6 . | . . . | . 6 66 . . | 6 6 6 | . . .------+-------+------. . . | . . 6 | 6 . .. . . | 6 6 . | . 6 .. . . | . . . | . . .`

[Edit: the first sample is possible without boxes 1 and 4]
You can make the eliminations without boxes 1 and 9 (but using box 8) also.
Ruud wrote:
Code: Select all
` .   .   . |(.)  .   . | #   #   * .   .   . |(.)  .   . | #   #   * .   .   . |(.)  .   . | #   #   *-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . *   *   * | X   *   * | X   X   * .   .   . | |   .   . | |   |   .-----------+-|---------+-|---|----- .   .   . | |   .   . | |   |   . .   .   . | |   .   . | |   |   . *   *   * | X   *   * | X   X   *`

The funny thing is: We do not need any fin in box 3 to do the eliminations as indicated.

But there must be at least one to keep the puzzle valid.
Last edited by ravel on Mon Mar 20, 2006 9:53 am, edited 1 time in total.
ravel

Posts: 998
Joined: 21 February 2006

ravel wrote:You can make the eliminations without boxes 1,4 in the first and without boxes 1,9 in the second sample.

If you are referring to the Empty Rectangles, I know they are there (as pointed out several times, the Frankenswordfish is just an ER) but Ruud was saying that there were no fish in this puzzle.

havard
Havard

Posts: 377
Joined: 25 December 2005

Ah, sorry, i missed that this was the point.
ravel

Posts: 998
Joined: 21 February 2006

Havard wrote:
Ruud wrote:..............
200104003007800100000000090100900030000271000000000500030490000000007002006002700[/code]
The last one still requires 4 colouring steps and no fish whatsoever is found.

I would beg to differ. You just have not concidered the awsome power of FRANKENFISH!

You just passed up an opportunity to espouse the awesome power of your "two-string kite".
Code: Select all
`  .  6  .  |  .  6  .  |  6  .  .    6  6  .  |  .  6  .  |  .  .  6    6  6  .  |  .  6  6  |  .  .  6  -----------+-----------+-----------  .  .  .  |  .  6--------------6    6  6  .  |  .  .  .  |  .  6 -6    6  .  .  |  6 -6 -6  |  .  |  .  -----------+--|--------+-----|-----  .  .  .  |  |  .  6  |  6  |  .    .  .  .  |  6 -6  .  |  .  6  .    .  .  .  |  .  .  .  |  .  .  .  `

This continuous x-cycle of length 6, aka coloring, eliminates all other 6s in row 8 and boxes 5 and 6.

I think most people can spot a chain of three strong links before they can spot a finned swordfish, especially a two-finned one.

Ron
ronk
2012 Supporter

Posts: 4764
Joined: 02 November 2005
Location: Southeastern USA

I'm not sure if I could catch a Frankenfish if my life depended on it...but Havard seems to be pulling these things into the boat at will. So I am kind of wondering at his technique for spotting these things. Personally I think he is using a conjugate pair as a lure--sees a flash of body--and then snags it by the fins. I could use some pointers from this master angler.
Myth Jellies

Posts: 593
Joined: 19 September 2005

Myth Jellies wrote:I'm not sure if I could catch a Frankenfish if my life depended on it...but Havard seems to be pulling these things into the boat at will. So I am kind of wondering at his technique for spotting these things. Personally I think he is using a conjugate pair as a lure--sees a flash of body--and then snags it by the fins. I could use some pointers from this master angler.

heh, I guess now would be the opportunity to tell about how my grandfather was a fisherman in the cold artic northsea, and how the life of him and his familiy depended upon him reeling in those fish, and how this is propably genetic etc.etc.

However, the thruth is that it is not the Frankenfish that is easy to spot, it is the Empty Rectangle, and every time you find one of those, you can construct a fish around it... (as pointed out by yourself...) My technique: Find a strong link (conjugate pair), then follow each end of the strong link (if the link is in a row, you look in the columns of each end and v.v.) and see if you can find a box where there are no candidates on either side of the line you are tracing. Err.. I made that sound weird... Look at this:
conjugate pair:
Code: Select all
`. . . | . . . | . . .. . . | . . . | . . .. . . | . . . | . . .------+-------+------. . . | . . . | . . .. A-------------B .. . . | . . . | . . .------+-------+------. . . | . . . | . . .. . . | . . . | . . .. . . | . . . | . . .`

The "lookinglines":
Code: Select all
`. | . | . . . | . | .. | . | . . . | . | .. | . | . . . | . | .--|---+-------+---|--. | . | . . . | . | .. A . | . . . | . B .. | . | . . . | . | .--|---+-------+---|--. | . | . . . | . | .. | . | . . . | . | .. | . | . . . | . | .`

If I can find this anywhere along the lookinglines:
Code: Select all
`. | .X | XX | X`
or this:
Code: Select all
`X | X. | . X | X`
or this:
Code: Select all
`| . .| X X | X X(note all X's here means that it is an EMPTY square..)`

etc.

Basically if I can make an ER on the sides of the "lookingline", then I know I have an potential ER, and a potential elimination, and hence also a potential Frankenfish! The thing I find so easy about this, is that you are actually not looking for candidates, you are trying to find where there are no candidates, and in a pattern as well.

And to return your nice words: You are actually the reason that I discovered and use this approach! If you remember, you pointed me in the direction in this thread: http://forum.enjoysudoku.com/viewtopic.php?p=20806#p20806