Técnicas Lógicas

El Sudoku es un rompecabezas que se resuelve mediante lógica. La idea básica para completar el rompecabezas es encontrar celdas para las que conocemos un único candidato.

Master Sudoku puede aplicar las siguientes métodos lógicos para llegar a la solución.

  1. Simple Descubierto
  2. Simple Oculto
  3. Candidatos Bloqueados
  4. Pares Descubiertos
  5. Tríos Descubiertos
  6. Cuartetos Descubiertos
  7. Pares Ocultos
  8. Tríos Ocultos
  9. Cuartetos Ocultos
  10. X-Wing
  11. Swordfish
  12. Jellyfish
  13. Squirmbag
  14. Skyscraper
  15. Two String Kite
  16. Finned X-Wing (X-Wing con aletas)
  17. Finned Swordfish (Swordfish con aletas)
  18. Finned Jellyfish (Jellyfish con aletas)
  19. Sashimi Finned X-Wing (X-Wing con aletas)
  20. Sashimi Finned Swordfish (Swordfish con aletas)
  21. Franken Swordfish
  22. Rectángulos Vacíos
  23. Rectángulos Únicos
  24. Rectángulos Únicos Ocultos
  25. Rectángulos Evitables
  26. XY-Wing
  27. XYZ-Wing
  28. WXYZ-Wing
  29. W-Wing
  30. Colores
  31. Colores Múltiples
  32. Ciclos X
  33. Ciclos X Agrupados
  34. Pares Remotos
  35. Cadenas XY
  36. Cadenas de Inferencias Alternas
  37. Sets Casi Bloqueados Regla XZ
  38. Sets Casi Bloqueados XY Wing
A cualquier celda que tenga un solo candidato, se le puede asignar ese valor. Cuando se asigna un valor a una celda, puede excluirse ese candidato de otras celdas que comparten una misma fila, columna o 3x3 cuadro. Master Sudoku hace esta tarea automáticamente.
Hay un solo candidato para una fila, columna o cuadro, pero está oculto entre otros candidatos posibles.
Tipo 1: A veces un candidato dentro de un cuadro está restringido a una fila o columna. Como una de estas celdas tiene el candidato, entonces puede excluirse este valor de las celdas de la fila o columna afuera del cuadro.

.-------.-------.-------.    Leyenda:
| * * * | * * * | X X X |      X : celda que puede contener un candidato X
|       |       | - - - |      - : celda que no contiene al candidato X
|       |       | - - - |      * : celda que pude eliminarse el candidato X
'-------'-------'-------'

Tipo 2: A veces un candidato dentro de una fila o columna está restringido a un cuadro. Como una de estas celdas tiene el candidato, entonces puede excluirse este valor de las otras celdas del cuadro.

.-------.-------.-------.
| - - - | - - - | X X X |
|       |       | * * * |
|       |       | * * * |
'-------'-------'-------'
Si dos celdas en un grupo tienen únicamente un par de candidatos idénticos, entonces estos valores pueden excluirse de las otras celdas del grupo.
Cuando en tres celdas se encuentran únicamente los mismos tres candidatos, entonces estos valores pueden excluirse de las otras celdas del grupo.
Cuando en cuatro celdas se encuentran únicamente los mismos cuatro candidatos, entonces estos valores pueden excluirse de las otras celdas del grupo.
>Si dos celdas en un grupo tienen un mismo par de candidatos, entre otros candidatos posibles y no hay en el grupo otra celda que tenga alguno de los candidatos del par, entonces los otros candidatos de las dos celdas pueden excluirse.
Si tres candidatos están restringidos a tres celdas del grupo, los otros candidatos de las tres celdas pueden ser excluidos. Son difíciles de encontrar, afortunadamente es raro requerir esta técnica para resolver un puzzle.
Si cuatro candidatos están restringidos a cuatro celdas del grupo, los otros candidatos de las cuatro celdas pueden ser excluidos. Son muy raros y casi imposibles de encontrar salvo que se conozca que está presente.
En cada Sudoku, un valor puede estar sólo una vez en una fila, columna o cuadro.
Si un candidato tiene sólo dos celdas posibles en una fila, deberá asignarse a una de esas dos celdas.
Si un puzzle tiene dos filas donde el candidato X está restringido a las mismas dos columnas, entonces puede excluirse el candidato X de las otras celdas de ambas columnas.
La misma lógica se aplica cuando un puzzle tiene dos columnas donde el candidato X está resringido a las mimas dos filas.

.----------.----------.
| .  *  .  | .  *  .  |
| -  X  -  | -  X  -  |
| .  *  .  | .  *  .  |
:----------+----------:
| .  *  .  | .  *  .  |
| -  X  -  | -  X  -  |
| .  *  .  | .  *  .  |
:----------+----------:
El patrón Swordfish es una variacIón del patrón X-Wing.
Si un puzzle tiene tres filas donde el candidato X está restringido a las mismas tres columnas, entonces puede excluirse el candidato X de las otras celdas de las tres columnas.
La misma lógica se aplica cuando un puzzle tiene tres columnas donde el candidato X está resringido a las mimas tres filas.
Las técnicas X-Wing y Swordfish pueden generalizarse cuatro filas que tengan un candidato restringido a cuatro celdas en las mismas columnas (Jellyfish).

.----------.----------.----------.
| .  *  .  | .  *  .  | .  *  .  |
| -  X  -  | -  X  -  | -  X  -  |
| .  *  .  | .  *  .  | .  *  .  |
:----------+----------+----------:
| .  *  .  | .  *  .  | .  *  .  |
| -  X  -  | -  X  -  | -  X  -  |
| .  *  .  | .  *  .  | .  *  .  |
:----------+----------+----------:
| .  *  .  | .  *  .  | .  *  .  |
| -  X  -  | -  X  -  | -  X  -  |
| .  *  .  | .  *  .  | .  *  .  |
:----------.----------.----------:
El patrón Jellyfish es una variación del patrón X-Wing.
Si un puzzle tiene cuatro filas donde el candidato X está restringido a las mismas cuatro columnas, entonces puede excluirse el candidato X de las otras celdas de las cuatro columnas.
La misma lógica se aplica cuando un puzzle tiene cuatro columnas donde el candidato X está restringido a las mimas cuatro filas.
El patrón Squirmbag es una variación del patrón X-Wing.
Si un puzzle tiene cinco filas donde el candidato X está restringido a las mismas cinco columnas, entonces puede excluirse el candidato X de las otras celdas de las cinco columnas.
La misma lógica se aplica cuando un puzzle tiene cinco columnas donde el candidato X está restringido a las mimas cinco filas.
Es una variante de X-Wing.
Se produce cuando en uno de los cuadros el candidato se presenta en más de una casilla.
Sólo puede excluirse el candidato X en el grupo donde se encuentra la "aleta".

.----------.----------.
| .  .  .  | .  .  .  |
| -  X  -  | -  X  -  |
| .  .  .  | .  .  .  |
:----------+----------:
| .  *  .  | .  .  .  |
| X  X  -  | -  X  -  |
| .  *  .  | .  .  .  |
:----------+----------:
Es una variante de Finned X-Wing.
Se produce cuando en uno de los cuadros posee una aleta y falta una de las esquinas del X-Wing.
Sólo puede excluirse el candidato X en el grupo donde se encuentra la "aleta".

.----------.----------.
| .  .  .  | .  .  .  |
| -  X  -  | -  X  -  |
| .  .  .  | .  .  .  |
:----------+----------:
| .  *  .  | .  .  .  |
| X  -  -  | -  X  -  |
| .  *  .  | .  .  .  |
:----------+----------:
El patrón Finned Swordfish es una variación del patrón Sworfish.
Se produce cuando en uno de los cuadros posee una aleta.
Sólo puede excluirse el candidato X en el grupo donde se encuentra la "aleta".

.----------.----------.----------.
| .  .  .  | .  .  .  | .  .  .  |
| -  X  -  | -  X  -  | -  X  -  |
| .  .  .  | .  .  .  | .  .  .  |
:----------+----------+----------:
| .  .  .  | .  .  .  | .  .  .  |
| -  X  -  | -  X  -  | -  X  -  |
| .  .  .  | .  .  .  | .  .  .  |
:----------+----------+----------:
| .  *  .  | .  .  .  | .  .  .  |
| X  X  -  | -  X  -  | -  X  -  |
| .  *  .  | .  .  .  | .  .  .  |
:----------.----------.----------:
El patrón Sashimi Finned Swordfish es una variación del patrón Finned Sworfish.
Se produce cuando en uno de los cuadros posee una aleta y está ausente uno de los candidatos del patrón.
Sólo puede excluirse el candidato X en el grupo donde se encuentra la "aleta".

.----------.----------.----------.
| .  .  .  | .  .  .  | .  .  .  |
| -  X  -  | -  X  -  | -  X  -  |
| .  .  .  | .  .  .  | .  .  .  |
:----------+----------+----------:
| .  .  .  | .  .  .  | .  .  .  |
| -  X  -  | -  X  -  | -  X  -  |
| .  .  .  | .  .  .  | .  .  .  |
:----------+----------+----------:
| .  *  .  | .  .  .  | .  .  .  |
| X  -  -  | -  X  -  | -  X  -  |
| .  *  .  | .  .  .  | .  .  .  |
:----------.----------.----------:
El patrón Franken Swordfish es una variación del patrón Sworfish.
Responde a los siguientes patrones

.----------.----------.----------. .----------.----------.----------.
| .  *  .  | .  *  .  | .  .  .  | | .  .  .  |  * *  .  | .  .  .  |
| -  X  -  | -  X  -  | -  -  -  | | -  -  -  |  X X  -  | -  -  -  |
| .  *  .  | .  *  .  | .  .  .  | | .  .  .  |  * *  .  | .  .  .  |
:----------+----------+----------: :----------+----------+----------:
| .  *  .  | .  *  .  | *  *  *  | | .  .  .  |  * *  .  | *  *  *  |
| -  X  -  | -  X  -  | X  X  X  | | -  -  -  |  X X  -  | X  X  X  |
| -  X  -  | -  X  -  | X  X  X  | | -  -  -  |  X X  *  | X  X  X  |
:----------+----------+----------: :----------+----------+----------:
| .  *  .  | .  *  .  | .  .  .  | | .  .  .  |  * *  .  | .  .  .  |
| .  *  .  | .  *  .  | .  .  .  | | .  .  .  |  * *  .  | .  .  .  |
| .  *  .  | .  *  .  | .  .  .  | | .  .  .  |  * *  .  | .  .  .  |
:----------.----------.----------: :----------.----------.----------:
Es el patrón de sashimi finned x-wing de una sola aleta

.----------.----------.
| .  .  .  | .  *  .  |
| -  X  -  | X  -  -  |
| .  .  .  | .  *  .  |
:----------+----------:
| .  .  .  | *  .  .  |
| -  X  -  | -  X  -  |
| .  .  .  | *  .  .  |
:----------+----------:
El patrón contiene 2 pares conjugados, uno en una fila y el otro en una columna, estas 2 "cuerdas" comparten un cuadro formando el "barrilete".
Se puede eliminar cualquier candidato que vea ambos extremos de las 2 cuerdas.

.----------.----------.
| -  .  .  | .  .  .  |
| -  X  -  | -  X  -  |
| X  .  .  | .  .  .  |
:----------+----------:
| -  .  .  | .  .  .  |
| X  .  .  | .  *  .  |
| -  .  .  | .  .  .  |
:----------+----------:
Se requiere un patrón de 4 cuadros.
Debe existir una cadena de 3 nodos en 3 cuadros con un enlace fuerte (A=B) y un enlace débil (B-C).
Si en el cuadro opuesto al cuadro del nodo B, los candidados están en la misma fila que el nodo C o en la misma columna que el nodo A, entonces C no puede ser verdadero y puede excluirse.
Si C fuese verdadero, entonces B sería falso (por la inferencia débil), si B es falso entonces A es verdadero (por la inferencia fuerte), entonces todos los candidatos de la columna de A son falsos y todos los candidatos de la fila de C son falsos. Como el cuadro está vacío (no hay candidatos posibles para el cuadro), entonces C no puede ser verdadero.

.----------.----------.
| .  .  .  | .  X  .  |
| -  X  X  | -  C  -  |
| .  X  .  | .  .  .  |
:----------+----------+
| .  .  .  | .  .  .  |
| -  A  -  | -  B  -  |
| .  .  .  | .  .  .  |
:----------+----------+
Patrón Mortal: es una restricción de 2 candidatos en 2 columnas, 2 filas y 2 cuadros.

.----------.----------.
| .  .  .  | .  .  .  |
| .  X  .  | Y  .  .  |
| .  Y  .  | X  .  .  |
:----------+----------+
Si se da este patrón quiere decir que podemos intercambiar las X por las Y sin inconvenientes, por lo que el sudoku tendría 2 soluciones, es decir no sería un puzzle válido
El principio básico de las siguientes técnicas es evitar este patrón.

Tipo 1: en la casilla XYZ no puede tener el valor X o Y porque quedaría un patrón mortal, entonces podemos excluir XY tranquilamente.

.----------.----------.
| .  .  .  | .  .  .  |
| .  XY .  | XYZ.  .  |
| .  XY .  | XY .  .  |
:----------+----------+

Tipo 2: Si las casillas que ven a XYZ fueran Z, entonces quedaría un patrón mortal, entonces podemos excluir todos los candidatos Z de las casillas que ven a XYZ.

.----------.----------.
| .  .  .  | .  *  .  |
| .  XY .  | XYZ.  .  |
| .  XY .  | XYZ.  .  |
:----------+----------+
| .  .  .  | *  .  .  |

Tipo 3: Se requiere una casilla que tenga un el par WZ. Si las casillas que ven a WXYZ y XYZ fueran W o Z, entonces quedaría un patrón mortal, entonces podemos excluir todos los candidatos W y Z de las casillas que ven a WXYZ, XYZ y el par WZ.

.----------.-----------.
| .  .  .  | *   .  .  |
| .  XY .  | WXYZ.  .  |
| .  XY .  | XYZ .  .  |
:----------+-----------+
| .  .  .  | WZ  .  .  |
| .  .  .  | *   .  .  |

Tipo 4: Si el candidato X es un par conjugado por fila/columna puede excluirse en candidato Y de las casillas XYZ y XYW.

.----------.----------.
| .  .  .  | -  .  .  |
| .  XY .  | XYZ.  .  |
| .  XY .  | XYW.  .  |
:----------+----------+
| .  .  .  | -  .  .  |

Tipo 5: Si las casillas que ven a XYZ fueran Z, entonces quedaría un patrón mortal, entonces podemos excluir todos los candidatos Z de las casillas que ven a XYZ.

.----------.-----------.
| .  .  .  | .   .  .  |
| .  XY .  | XYZ .  .  |
| .  XYZ.  | XYZ *  *  |
:----------+-----------+
| .  .  .  | .   .  .  |

Tipo 6: Si el candidato X sólo se encuentra 2 veces en las filas y columnas del rectángulo, podemos excluir en candidato Y de las casillas XY, para evitar un patrón mortal.

.----------.-----------.
| .  .  .  | .   .  .  |
| .  XY .  | XYZ .  .  |
| .  XYW.  | XY  .  .  |
:----------+-----------+
| .  .  .  | .   .  .  |
Se da cuando el rectángulo tiene 3 esquinas resueltas y la cuarta esquina tiene como candidato al valor de la casilla del extremo opuesto.
Puedo excluir el candidato X de la casilla XZW, dado que si la casilla fuera X entonces quedaría un patrón mortal.

.----------.----------.
| .  .  .  | .  .  .  |
| .  X  .  | Y  .  .  |
| .  Y  .  | XZW.  .  |
:----------+----------+
Cuando tres celdas tienen exactamente dos candidatos, comparten los mismos tres candidatos de la forma XY, XZ y YZ y una de las celdas (XY) -pivote- comparte un grupo con las otras dos celdas (XZ y YZ).
El candidato Z puede excluise de cualquier celda que comparta un gupo con ambas celdas XZ y YZ.

.----------.----------.----------.
| XY *  *  | .  .  .  | .  XZ .  |
| .  .  .  | .  .  .  | .  .  .  |
| .  YZ .  | .  .  .  | *  *  *  |
:----------+----------+----------:
La técnica XYZ-Wing es una extensión de XY-Wing.
Cuando tres celdas comparten los mismos tres candidatos de la forma XYZ, XZ y YZ y la celda (XYZ) -pivote- comparte un grupo con las otras dos celdas (XZ y YZ).
El candidato Z puede excluise de cualquier celda que comparta un gupo con las tres celdas XYZ, XZ y YZ.

.-----------.----------.----------.
| *  *  XYZ | .  .  .  | YZ .  .  |
| .  .  .   | .  .  .  | .  .  .  |
| XZ .  .   | .  .  .  | .  .  .  |
:-----------+----------+----------:
La técnica WXYZ-Wing es una extensión de XYZ-Wing.
Cuando cuatro celdas comparten los mismos cuatro candidatos de la forma WXYZ, WZ, XZ y YZ y la celda (WXYZ) -pivote- comparte un grupo con las otras tres celdas (WZ, XZ y YZ).
El candidato Z puede excluise de cualquier celda que comparta un gupo con las cuatro celdas WXYZ, WZ, XZ y YZ.

.-----------.----------.----------.
| *  *  WXYZ| .  XZ .  | YZ .  .  |
| .  WZ .   | .  .  .  | .  .  .  |
| .  .  .   | .  .  .  | .  .  .  |
:-----------+----------+----------:
Un W-Wing está formado por una cadena de 4 celdas:

Donde es requerido que A vea a B, C vea a D, y B con C tengan un enlace fuerte con el candidato X.
Entonces W puede ser eliminado de cualquier celdas que vea a A y D simultaneamente.

.-----------.----------.----------.
| .  .  .   | .  .  .  | .  .  .  |
| *  *  *   | .  WX .  | .  X  .  |
| .  .  WX  | .  *  .  | .  X  .  |
:-----------+----------+----------:
Definimos "par conjugado" cuando un candidato está restringido a dos celdas de un fila, columna o grupo.
Una celda será verdadera y la otra falsa. No sabemos cuál.
Generalmente un par conjugado se une con otro par conjugado formando una cadena de pares conjugados (verdaderos y falsos alternados) y esa cadena puede exponer candidatos a excluir.
Podemos colorear la cadena con A+ (verdadero) y A- (falso).

Tipo 1: Cuando dos celdas de una cadena conjugada tienen el mismo color y comparten un mismo grupo (fila, columna o cuadro). Ese color debe ser el falso dado que en cada grupo sólo puede haber uno de los dos colores.

Tipo 2: Cuando un candidato afuera de la cadena se relaciona por fila, columna o cuadro con dos celdas A+ y A- de la cadena conjugada, ese candidato puede ser excluido.
Tipo 1: Si los colores de una cadena son A+ y A-, y los colores de la otra cadena son B+ y B- y si A+ comparte una fila, columna o cuadro con B+ y con B-, entonces A+ debe ser el candidato falso, dado que o bien B+ o bien B- es verdadero. Por lo tanto puede excluirse el candidato de A+.

Tipo 2: Si A+ comparte una fila, columna o cuadro con B+ (y no con B-), entonces cualquier celda de la grilla (fuera de las cadenas) que contenga al candidato en cuestión y que comparta una fila, columna o cuadro con A- y B-, puede ser excluido.
Una cadena XY es aquella cadena formada por celdas de dos candidatos, en las que la primera y última celda de la cadena tienen un mismo candidato no enlazado. Cualquier celda que vea a ambas puntas de la cadena, no puede contener al candidato no enlazado. Por ejemplo, en la cadena AB-BC-CD-DE-EF-FG-GA, la celda AB enlaza con la BC a través del candidato B, la celda BC enlaza con la celda CD a través del candidato C, y así sucesivamente hasta la celda FG que enlaza con la celda GA a través del candidato G. Tanto la celda AB como la GA contiene al candidato A, que no está enlazado en la cadena. Una de estas dos celdas va a valer A, aunque no sabemos aún cuál de las dos será. Entonces, como siempre una de las dos celdas AB o GA va a valer A, cualquier otra celda que "vea" ambas celdas AB y GA, no puede valer A.
Definimos enlace con inferencia fuerte cuando un candidato sólo puede estar en 2 casilleros dentro de una fila, columna o cuadro.

!A => B (si no es A, entonces es B)
Los enlaces con inferencia débil son exactamente lo contrario. Un candidado puede estar en más de 2 casilleros dentro de una fila, columna o cuadro.

A => !B, !C, !D (si es A, entonces no es B ni C ni D)
Un Ciclo X, como implica el nombre, es un loop de un dígito único (X) con enlaces fuertes y débiles que se alternan. Los Ciclos pueden ser de cualquier longitud (número de celdas que intervienen en él).
Para estos ciclos se usa la nomenclatura #A=#B-#C=#D-#E=#F-#A donde "#" es el candidato, "=" representa el enlace fuerte y "-" representa el enlace débil.
Se denominan Nice Loops a los loops que alternan enlaces fuertes y débiles.
Los Ciclos X son un subconjunto de Nice Loops en que se encadenan enlaces de un único dígito.

Los Nice Loops que alternan inferencias fuerte-débil-fuerte-débil y así sucesivamente, se denominan "continuos", y deben tener siempre un número par de nodos (casillas).

Regla 1: En un Ciclo X continuo, se pueden eliminar candidatos fuera del loop que se encuentran dentro de la unidad (fila, columna o cuadro) de los enlaces con inferencia débil.

Un Ciclo X Discontinuo ocurre cuando encontramos dos inferencias fuertes una al lado de la otra (o sea, sin inferencias débiles entre ellas) o cuando encontramos dos inferencias débiles una al lado de la otra (sin inferencias fuertes entre ellas).
Para que las siguientes reglas funciones sólo debe existir una sola discontinuidad en el loop, y tal loop siempre debe tener un número impar de nodos.
Estas discontinuidades son muy comunes, de hecho es más frecuente hallar Ciclos X Discontinuos que Ciclos X Continuos.

Regla 2: En un Ciclo X Discontinuo, si los enlaces adyacentes son enlaces con inferencia fuerte, se puede colocar el candidato en la casilla en que ocurre la discontinuidad.

Regla 3: En un Ciclo X Discontinuo, si los enlaces adyacentes son enlaces con inferencia débil, se puede eliminar el candidato de la casilla en que ocurre la discontinuidad.

Enlaces fuertes pueden ser inferencias débiles.
De las definiciones de inferencias fuertes y débiles es fácil darse cuenta que en un enlace fuerte también es verdadero que:

!A => B (si no es A, entonces es B) -> según la definición de inferencia fuerte
B => !A (si es B entonces no es A) -> lo cual significa que un enlace fuerte puede ser convertido en una inferencia débil
Este es un recurso muy útil para obtener cadenas de ciclos alternos, necesarias para aplicar las reglas de Nice Loops, cuando en un loop en que hay enlaces fuertes, éstos no se pueden alternar.
Como sabemos ahora que los enlaces fuertes pueden ser inferencias débiles, y en los loops lo que importa son la alternancia de inferencias fuertes y débiles, es posible encontrar entonces loops donde no existen los suficientes enlaces débiles.
Es una extensión de los Nice Loops, donde no existe la restricción a un único candidato en la cadena, sino que desde un enlace al siguiente se pueden cambiar de número de candidato.
Si en una casilla existen sólo 2 candidatos, entonces ellos se pueden enlazar fuertemente. Si existen 3 o más candidatos, ellos se pueden enlazar con inferencia débil.
Para estos ciclos se usa la nomenclatura #A=#B-#C=#D-#E=#F-#A donde "#" es el candidato, "=" representa el enlace fuerte y "-" representa el enlace débil.

En una Cadena de Inferencia Alterna se pueden aplicar las 3 reglas de los Ciclos X.
Si además, en una cadena continua existen celdas con inferencia débil dentro de las mismas, se pueden excluir todos los candidatos que no forman parte del enlace débil dentro de esa celda.

Adicionalmente, se puede establecer una nueva regla. Si el final de una cadena de inferencias alternas llega al mismo grupo (fila, columna o cuadro) del inicio de la cadena, ambos números son diferentes y el primero y el último enlace son fuertes, entonces cada número final de la cadena no puede existir en la punta contraria de la misma.