Fish

Basic Fish

Overview

Fish is a core technique that intermediate Sudoku players must master. It often plays a critical role in solving puzzles.

Like Hidden Sets , Fish relies on observing candidate distribution within Regions . However, Fish requires examining two intersecting sets of Regions : Base Regions and Cover Regions .

Fish techniques are classified by the number of Base Regions , denoted by n . Let’s look at some examples.

Cyclopsfish

Cyclopsfish occurs when n = 1 . In this case, all cells containing a candidate within 1 Base Region are covered by 1 Cover Region .

Note: Cyclopsfish is essentially the same as the Intersections technique we learned earlier (specifically Pointing or Claiming ).

Cyclopsfish Example 1

In the image, candidate 4 in Base Region Column G (blue area) appears only in cells {G4, G5} (green candidates). These are completely covered by Cover Region Box 6 (green area).

How does Cyclopsfish elimination work?

Consider this: all instances of candidate 4 in the Base Region fall within the intersection of the Base Region and the Cover Region (cells {G4, G5, G6} ).

By Sudoku rules, every region must contain exactly one 4 . Since candidate 4 in Base Region Column G appears only in the intersection, one 4 must be placed within these intersection cells.

Similarly, Cover Region Box 6 must also contain one 4 . Since the intersection already contains one 4 , the other cells in Box 6 cannot contain a 4 . Thus, we can eliminate candidate 4 from the rest of Box 6 .

Generalization

This logic generalizes to n Base Regions and n Cover Regions . Let’s call the candidate x .

General definition of Fish :

A Fish pattern exists for candidate x if all its occurrences within n same-type (non-overlapping) Base Regions are covered by n same-type (non-overlapping) Cover Regions .

General elimination logic of Fish :

According to Sudoku rules, the n Base Regions must contain n instances of x . Since candidate x in the Base Regions appears only in the intersection with the Cover Regions , those n instances of x must be placed within that intersection.

Similarly, the n Cover Regions must also contain n instances of x . Since the intersection already contains these n instances, any cells in the Cover Regions that are outside the intersection cannot contain x . Therefore, candidate x can be eliminated from any cells in the Cover Regions that are outside the intersection.

This is the core logic of Fish . Let’s look at more examples.

X-Wing

X-Wing is a Fish where n = 2 .

X-Wing Example 1

In the image, candidate 5 in Base Regions Row 3 and Row 5 (blue areas) appears in cells completely covered by Cover Regions Column C and Column E (green areas).

This means candidate 5 in the Base Regions is confined to the intersection with the Cover Regions : {C3, E3, C5, E5} .

Consequently, cells in the Cover Regions outside this intersection cannot contain 5 . We can eliminate candidate 5 from C6 and E6 .

X-Wing Example 2

In the image, candidate 4 in Base Regions Column E and Column H (blue areas) appears in cells completely covered by Cover Regions Row 3 and Row 4 (green areas).

This means candidate 4 in the Base Regions is confined to the intersection with the Cover Regions : {E3, H3, E4, H4} .

Consequently, cells in the Cover Regions outside this intersection cannot contain 4 . We can eliminate candidate 4 from A3 , B3 , and C3 .

Swordfish

Swordfish is a Fish where n = 3 .

Swordfish Example 1

In the image, candidate 1 in Base Regions Row 2 , Row 4 , and Row 7 (blue areas) appears in cells completely covered by Cover Regions Column B , Column E , and Column G (green areas).

This means candidate 1 in the Base Regions is confined to the intersection with the Cover Regions : {B2, E2, G2, B4, E4, G4, B7, E7, G7} .

Consequently, cells in the Cover Regions outside this intersection cannot contain 1 . Candidate 1 in G3 can be eliminated.

Swordfish Example 2

In the image, candidate 9 in Base Regions Row 3 , Row 5 , and Row 7 (blue areas) appears in cells completely covered by Cover Regions Column C , Column E , and Column I (green areas).

This means candidate 9 in the Base Regions is confined to the intersection with the Cover Regions : {C3, E3, I3, C5, E5, I5, C7, E7, I7} .

Consequently, cells in the Cover Regions outside this intersection cannot contain 9 . Candidate 9 in I2 , C6 , E6 , and C9 can be eliminated.

Jellyfish

Jellyfish is a Fish where n = 4 .

Jellyfish Example 1

In the image, candidate 1 in Base Regions Row 1 , Row 4 , Row 5 , and Row 7 (blue areas) appears in cells completely covered by Cover Regions Column B , Column C , Column G , and Column I (green areas).

This means candidate 1 in the Base Regions is confined to the intersection with the Cover Regions : {B1, C1, G1, I1, B4, C4, G4, I4, B5, C5, G5, I5, B7, C7, G7, I7} .

Consequently, cells in the Cover Regions outside this intersection cannot contain 1 . Candidate 1 in C2 and I8 can be eliminated.

Jellyfish Example 2

In the image, candidate 6 in Base Regions Row 3 , Row 5 , Row 6 , and Row 8 (blue areas) appears in cells completely covered by Cover Regions Column B , Column C , Column F , and Column I (green areas).

This means candidate 6 in the Base Regions is confined to the intersection with the Cover Regions : {B3, C3, F3, I3, B5, C5, F5, I5, B6, C6, F6, I6, B8, C8, F8, I8} .

Consequently, cells in the Cover Regions outside this intersection cannot contain 6 . Candidate 6 in B4 and C7 can be eliminated.

Finned Fish

Overview

Finned Fish is a variation of the standard Fish technique.

When looking for Fish patterns, sometimes the Cover Regions do not fully cover all candidates in the Base Regions . These uncovered candidates are known as Fins , and the cells containing them are called Fin Cells . Even with these slight imperfections, we can often still make eliminations.

Finned X-Wing

Let’s explore the Finned Fish technique with an example.

Finned X-Wing Example 1

In this example, the Base Regions (blue areas) are Row 4 and Row 9 , and the Cover Regions (green areas) are Col B and Col F . The candidate is 7 . Notice that the candidate 7 in E9 (blue candidate) is part of the Base Regions but is not covered by the Cover Regions .

A candidate like this, which lies within the Base Regions but remains uncovered, is called an Exo Fin (a type of Fin ).

How do we find eliminations? We can reason as follows:

Case 1: If no Fin Cell contains a 7 , this pattern acts like a regular X-Wing . We would eliminate the orange and red candidates as usual.

Case 2: If at least one Fin Cell contains a 7 , then any cell that can see all Fin Cells cannot contain a 7 .

Since one of these cases must be true, any candidate eliminated in both scenarios can be safely removed.

Simply put: look for cells that would be eliminated by a regular Fish . If such a cell can also see all Fin Cells , the candidate 7 inside it can be eliminated.

Therefore, the 7 in F8 can be eliminated because F8 is targeted by the regular X-Wing logic AND it can see the single Fin Cell {E9} .

Let’s look at a second example.

Finned X-Wing Example 2

Here, the Base Regions (blue areas) are Col C and Col F , and the Cover Regions (green areas) are Row 6 and Row 8 . The candidate is 2 . The candidate 2 in C5 (blue candidate) is uncovered, making it a Fin .

A standard elimination would remove candidate 2 s from A8 and A6 (orange and red candidates). Of these, only A6 can see the single Fin Cell {C5} , so the candidate 2 in A6 can be eliminated.

Finned Swordfish

Finned Swordfish Example 1

In this image, the Base Regions (blue areas) are Col B , Col G , and Col I ; the Cover Regions (green areas) are Row 3 , Row 4 , and Row 8 ; the candidate is 2 . The candidates 2 in {G5, I5, G6} (blue candidates) are uncovered, becoming Fins .

A standard elimination would remove candidate 2 s from {E3, F3, H3, C4, H4} (orange and red candidates). Of these, only H4 can see all Fin Cells {G5, I5, G6} , so the candidate 2 in H4 can be eliminated.

Finned Swordfish Example 2

In this example, the Base Regions (blue areas) are Row 1 , Row 3 , and Row 8 ; the Cover Regions (green areas) are Col B , Col F , and Col H ; the candidate is 4 . The candidates 4 in {E1, D3} (blue candidates) are uncovered, becoming Fins .

A standard elimination would remove candidate 4 s from {F2, F5, F7, B9, F9} (orange and red candidates). Of these, only F2 can see all Fin Cells {E1, D3} , so the candidate 4 in F2 can be eliminated.

Finned Jellyfish

Finned Jellyfish Example 1

In the image, the Base Regions (blue areas) are Row 1 , Row 4 , Row 6 , and Row 8 ; the Cover Regions (green areas) are Col B , Col D , Col F , and Col H ; the candidate is 3 . The candidates 3 in {G4, I6} (blue candidates) are uncovered, becoming Fins .

A standard elimination would remove candidate 3 s from {B2, F2, H2, B3, D3, F3, H3, F5, H5, D7, D9, H9} (orange and red candidates). Of these, only H5 can see all Fin Cells {G4, I6} , so the candidate 3 in H5 can be eliminated.

Mutant Fish (Optional)

We will add content about Mutant Fish here in the future.

Fish Theory (Optional)

Definition of “See”

Two cells c1c_1 and c2c_2 (c1c2c_1 \ne c_2) see each other if they belong to the same region RR.

Note that in our definition, a cell cannot see itself.

Definition of Basic Fish

Basic Fish is a pattern for a candidate kk involving a set of Base Regions (RbaseR_{base}) and a set of Cover Regions (RcoverR_{cover}). The regions in RbaseR_{base} must not overlap, and the regions in RcoverR_{cover} must not overlap. Let CbaseC_{base} be the cells containing kk in RbaseR_{base}, and CcoverC_{cover} be the cells containing kk in RcoverR_{cover}. If Rbase=Rcover|R_{base}| = |R_{cover}| and CbaseCcoverC_{base} \subset C_{cover}, this pattern is called a Fish.

It is called Basic Fish because it requires Base Regions to be non-overlapping, Cover Regions to be non-overlapping, and Cover Regions to cover all kk in Base Regions. These conditions are not strictly necessary.

Proof of Basic Fish Technique

Proposition : For candidate kk, if there exists a set of Base Regions RbaseR_{base} and a set of Cover Regions RcoverR_{cover} forming a Basic Fish, let the sets of cells containing kk be CbaseC_{base} and CcoverC_{cover} respectively, then candidate kk in CcoverCbaseC_{cover} \setminus C_{base} can be eliminated.

Proof :

Let n=Rbasen = |R_{base}|.

By Sudoku rules, the number kk must be placed exactly once in each region.

Since RbaseR_{base} contains nn non-overlapping regions, exactly nn instances of kk must be placed in RbaseR_{base}. This means exactly nn instances of kk are in CbaseC_{base}.

Similarly, exactly nn instances of kk must be placed in CcoverC_{cover}.

Since CbaseCcoverC_{base} \subset C_{cover}, we know that kk cannot be placed in CcoverCbaseC_{cover} \setminus C_{base}.

Therefore, candidate kk in CcoverCbaseC_{cover} \setminus C_{base} can be eliminated.

Definition of General Fish

General Fish refers to a pattern for candidate kk, where there exists a set of regions (Base Regions) RbaseR_{base}, and the set of cells containing kk in RbaseR_{base} is CbaseC_{base}. There exists another set of regions (Cover Regions) RcoverR_{cover}, and the set of cells containing kk in RcoverR_{cover} is CcoverC_{cover}. If Rbase=Rcover|R_{base}| = |R_{cover}|, then this pattern is called a Fish.

The main difference between General and Basic Fish is that Base Regions are allowed to overlap, Cover Regions are allowed to overlap, and the condition CbaseCcoverC_{base} \subset C_{cover} is not required.

Proof of General Fish Technique

Proposition : For candidate kk, there exists a set of Base Regions RbaseR_{base} and a set of Cover Regions RcoverR_{cover} forming a General Fish.

Let the sets of cells containing kk in RbaseR_{base} and RcoverR_{cover} be CbaseC_{base} and CcoverC_{cover} respectively.

Let Cexofin=CbaseCcoverC_{exo-fin} = C_{base} \setminus C_{cover}.

Let CendofinC_{endo-fin} be the set of cells in CbaseC_{base} that exist in multiple Base Regions.

Let CcannibalC_{cannibal} be the set of cells in CcoverC_{cover} that exist in multiple Cover Regions.

Let Cfin=CexofinCendofinC_{fin} = C_{exo-fin} \cup C_{endo-fin}.

Let Celim=(CcoverCbase)CcannibalC_{elim} = (C_{cover} \setminus C_{base}) \cup C_{cannibal}.

Let CseefinC_{see-fin} be the set of cells that can see all cells in CfinC_{fin}.

If Cfin=C_{fin} = \emptyset, then kk in CelimC_{elim} can be eliminated.

If CfinC_{fin} \ne \emptyset, then kk in CelimCseefinC_{elim} \cap C_{see-fin} can be eliminated.

Proof :

Let n=Rbasen = |R_{base}|.

Case 1 : Assume no kk is placed in CfinC_{fin}.

According to Sudoku rules, exactly one kk must be placed in each region.

Since kk is not placed in CfinC_{fin}, the cells where kk is placed belong to only one Base Region (i.e., not in the intersection of any two Base Regions).

Therefore, exactly nn instances of kk must be placed in CbaseC_{base}.

Since no kk is placed in CfinC_{fin},

CcoverC_{cover} effectively covers the cells in CbaseC_{base} where kk is placed.

Therefore, at least nn instances of kk are placed in CcoverC_{cover}.

By Sudoku rules, at most nn instances of kk can exist in the nn regions of CcoverC_{cover}.

So exactly nn instances of kk are placed in CcoverC_{cover}.

Therefore, the cells in CcoverC_{cover} where kk is placed cannot be in CcannibalC_{cannibal} (i.e., cannot be in the intersection of any two Cover Regions), otherwise the count of kk in CcoverC_{cover} would be less than nn.

So kk in CcannibalC_{cannibal} can be eliminated.

Also, kk cannot be placed in CcoverCbaseC_{cover} \setminus C_{base}, otherwise the counts of kk placed in both sets cannot be equal.

So kk in CcoverCbaseC_{cover} \setminus C_{base} can be eliminated.

Combining these,

kk in (CcoverCbase)Ccannibal=Celim(C_{cover} \setminus C_{base}) \cup C_{cannibal} = C_{elim} can be eliminated.

Case 2 : Assume kk is placed at least once in CfinC_{fin}.

Then kk in all cells of CseefinC_{see-fin} can be eliminated.

Combining both cases:

If Cfin=C_{fin} = \emptyset, then Case 2 is impossible, so only Case 1 is possible. Thus, kk in CelimC_{elim} can be eliminated.

If CfinC_{fin} \ne \emptyset,

If a cell belongs to both CelimC_{elim} and CseefinC_{see-fin}, then kk in this cell can be eliminated regardless of which case is true.

That is, kk in CelimCseefinC_{elim} \cap C_{see-fin} can be eliminated.