- Code: Select all
+--------------------+-------------------+------------------------+
| 56(7) 2456 24(7) | 1 8 46(7) | 456(-7) 9 3 |
| 1678 468 3 | 5 2479 4679 | 1468 26(7) 48(7) |
| 15678 9 147 | 3 247 467 | 14568 26(7) 458(7) |
+--------------------+-------------------+------------------------+
| 138 238 12 | 6 47 38 | 47 5 9 |
| 4 7 5 | 89 39 2 | 68 36 1 |
| 368 368 9 | 4(7) 1 5 | 2 3(7) 48 |
+--------------------+-------------------+------------------------+
| 39 34 8 | 2 4579 479 | 57 1 6 |
| 2 1 6 | 8(7) 35 38 | 9 4 5(7) |
| 579 45 47 | 49 6 1 | 3 8 2 |
+--------------------+-------------------+------------------------+
it doesn't list it as a fish under its engine, but it can find the elimination
which is very clear & makes it easy for Fish catching programs to miss/skip this creature.
i mentioned earlier a fish engine that uses actual pencil marks the "cover sector that doesn't include a vertex" would skip these creatures as the vertex's are missing. {and not having this rule generates loads of odd errors}
however when i swap my code back to theoretical:
in pseudo pencil mark {where all the cells are active for the base & cover set intersections }
then the creature is found, and its not "headless" {nothings missing}
the problem arises when you start extrapolating the "not all " x's need to be present mentioned in UFG for the fish to function
then you end up with degenerative fish that appears to break the 'cover sector that doesn't include a vertex' rule when the fish was valid in the pseudo stage.
personally I use
nxn+k fish as it does away with all the " endo,exo fins cells" and uses K sectors where any of the "n+k" sectors used acts as the "fin sector"
the math for it makes eliminations easily including the ones the "headless fish" seems to have a difficult time explaining.
- Code: Select all
N = # of sectors to use
N = sector selected from [ 1..27 ] sectors representing Row 1 - 9, Col 1 - 9, Box 1-9]
K = addition N sectors: {at max 2 additional cover sectors}
no selected sector can be used twice. .
Base = all occupied cells in each N sector selected
BI = all occupied overlapping cells in each N sector * the previous sectors used.
BI = (base[1] * base[2]) + (base[1] * base[3]) + ....+ (base[n-1] * base[n])
Pbi = common peer cells of each BI cell
PBi = Peer[1] * Peer[2] * ... * Peer[N]
Cover = all occupied cells in each N + K sector selected
Row_Cover = all occupied cells in each N+K sector: where N+K in [1..9] sector
Col_Cover = all occupied cells in each N+K sector: where N+K in [10..18] sector
Box_Cover = all occupied cells in each N+K sector: where N+K in [19..27] sector
Type I:
- Code: Select all
IF (bI = [ empty ]) and ((cover * base) = base)
then
if K = 0 then exclude: (cover - base )
if K = (0 or 1) then exclude: ( ( (Row_Cover * Box_cover) + (Row_Cover * Col_Cover) + (Box_cover * Col_Cover) ) - base )
if K > 1 then exclude: ( ( Row_Cover *Box_cover * Col_Cover) - base )
Type 2:
- Code: Select all
IF (bI = [ Cells ]) and ((cover * base) + bi = base)
then
if K = 0 then exclude: (Pbi * (cover - base ))
if K = (0 or 1) then exclude: ( (Pbi * ( (Row_Cover * Box_cover) + (Row_Cover * Col_Cover) + (Box_cover * Col_Cover) ) ) - base )
if K > 1 then exclude: ( (Pbi * ( Row_Cover *Box_cover * Col_Cover)) - base )
nxn uses peers of "fin cells" to see the elimination"
- Code: Select all
Sets:
Bn = units of the base set
Base (size N): B = B1 + B2 ... + BN
Base Intersect: BI = B1*B2 + B1*B3 ... + B1*BN + B2*B3 ... + (BN-1)*BN
Cn = units of the cover set
Cover (size N): C = C1 + C2 ... + CN
Cover Intersect: CI = C1*C2 + C1*C3 ... + C1*CN + C2*C3 ... + (CN-1)*CN
Hidden Pattern: H = (B \ C) + BI
Exclusion: E = (C \ B) + CI
Symbol Key:
'+' <=> union ('|' in C++)
'*' <=> intersection ('&' in C++)
'\' <=> substraction ('X & ~Y' in C++)
Conjecture:
If the "hidden set" is empty,
then the "exclusion set" is empty also.
1. exclusions in C\B
B will supply the digit N times (not less since none in BI);
all N will be in C (since none in B\C);
this supplies the full quota of the digit for the N units of C,
therefore, exclude it elsewhere in C (i.e. in C\B).
2. exclusions in CI
placing the digit in CI would satisfy 2 (or more) units of C,
so C could only take N-1 of the total N supplied by B.
I pointed out the limitations of this setup
here:
and suggested updating the elimination rules to include those limitations. {how not sure}
anyway long winded post that may have strayed.....I wouldn't include the degenerate "headless fish" example in the UFG as its missing the cover vertex rule
the pseudo fish that it derived from is usable in the ufg as it includes the rule.
- Code: Select all
Fraken sword. C489 / R68B3
+------------------+-----------------+----------------+
| 1 1 1 | . 1 1 | -1 (1) (1) |
| 1 1 1 | . 1 1 | -1 (1) (1) |
| 1 1 1 | . 1 1 | -1 (1) (1) |
+------------------+-----------------+----------------+
| 1 1 1 | . 1 1 | 1 . . |
| 1 1 1 | . 1 1 | 1 . . |
| (-1) (-1) (-1) | (1) (-1) (-1) | (-1) (1) (1) |
+------------------+-----------------+----------------+
| 1 1 1 | . 1 1 | 1 . . |
| (-1) (-1) (-1) | (1) (-1) (-1) | (-1) (1) (1) |
| 1 1 1 | . 1 1 | 1 . . |
+------------------+-----------------+----------------+
- Code: Select all
C489 / R168 + Box 3 (indicates that r1 is superfluous}
+------------------+-----------------+----------------+
| (1) (1) (1) | . (1) (1) | (-1) (1) (1) |
| 1 1 1 | . 1 1 | (-1) (1) (1) |
| 1 1 1 | . 1 1 | (-1) (1) (1) |
+------------------+-----------------+----------------+
| 1 1 1 | . 1 1 | 1 . . |
| 1 1 1 | . 1 1 | 1 . . |
| (-1) (-1) (-1) | (1) (-1) (-1) | (-1) (1) (1) |
+------------------+-----------------+----------------+
| 1 1 1 | . 1 1 | 1 . . |
| (-1) (-1) (-1) | (1) (-1) (-1) | (-1) (1) (1) |
| 1 1 1 | . 1 1 | 1 . . |
+------------------+-----------------+----------------+
- Code: Select all
C478/ R12368 {this one wont work under nxn+k or nxn but works in link-sets seen in xsudoku} {R123 coverts to box 1,2,3} box 3 being the key as the other 2 cant be used.
+------------------+-----------------+----------------+
| (1) (1) (1) | . (1) (1) | (-1) (1) (1) |
| (1) (1) (1) | . (1) (1) | (-1) (1) (1) |
| (1) (1) (1) | . (1) (1) | (-1) (1) (1) |
+------------------+-----------------+----------------+
| 1 1 1 | . 1 1 | 1 . . |
| 1 1 1 | . 1 1 | 1 . . |
| (-1) (-1) (-1) | (1) (-1) (-1) | (-1) (1) (1) |
+------------------+-----------------+----------------+
| 1 1 1 | . 1 1 | 1 . . |
| (-1) (-1) (-1) | (1) (-1) (-1) | (-1) (1) (1) |
| 1 1 1 | . 1 1 | 1 . . |
+------------------+-----------------+----------------+
in all honesty this is a degenerative case from this starting point.
- Code: Select all
Finned Sword fish.
R1C489 are all missing from the "headless" fish.
- Code: Select all
C489/R168B3
+---------+-----------+--------------+
| 1 1 1 | (1) 1 1 | -1 (1) (1) |
| 1 1 1 | . 1 1 | 1 (1) (1) |
| 1 1 1 | . 1 1 | 1 (1) (1) |
+---------+-----------+--------------+
| 1 1 1 | . 1 1 | 1 . . |
| 1 1 1 | . 1 1 | 1 . . |
| 1 1 1 | (1) 1 1 | 1 (1) (1) |
+---------+-----------+--------------+
| 1 1 1 | . 1 1 | 1 . . |
| 1 1 1 | (1) 1 1 | 1 (1) (1) |
| 1 1 1 | . 1 1 | 1 . . |
+---------+-----------+--------------+
when R1C4 is missing this turns into the fraken sword as r1 is dropped for box 3 exclusively.