¿No sabes por dónde empezar? Ayúdanos normalizando artículos.
¿Tienes experiencia? Crea alguno de estos artículos de actualidad.

Diferencia entre revisiones de «Sudoku backtracking»

 
(No se muestran 2 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
{{Mejorar|poner las fuentes}}'''Sudoku''' (en japonés: 数独, sūdoku) es un pasatiempo que se popularizó en [[Japón|Japón]] en [[1986|1986]], y se dio a conocer en el ámbito internacional en [[2005|2005]]. El objetivo del sudoku es rellenar una cuadrícula de 9 × 9 celdas (81 casillas) dividida en subcuadrículas de 3 × 3 (también llamadas "cajas" o "regiones") con las cifras del 1 al 9 partiendo de algunos números ya dispuestos en algunas de las celdas. Aunque se podrían usar colores, letras, figuras, se conviene en usar números para mayor claridad. Lo que importa, en todo caso, es que sean nueve elementos diferenciados. No se debe repetir ninguna cifra en una misma fila, columna o subcuadrícula. Un sudoku está bien planteado si la solución es única. La resolución del problema requiere paciencia y ciertas dotes lógicas.  
+
{{Definición|Nombre=Sudoku backtracking|imagen=sudoku.jpg|concepto= Es un rompecabezas matemático basado en la búsqueda de la combinación numérica perfecta. El término proviene de la lengua japonesa (数独, sūdoku). }}
 
+
<br>
La solución de un sudoku siempre es un cuadrado latino, aunque el recíproco en general no es cierto ya que el sudoku establece la restricción añadida de que no se puede repetir un mismo número en una región.
+
'''Sudoku.''' Entretenimiento que se inicia en los [[Estados Unidos]] y se populariza en [[Japón]] en [[1986]]. Desde aquí se produce su innegable salto al ámbito internacional en el [[2005]], fecha en que numerosos periódicos lo comienzan a publicar en su sección de pasatiempos. El juego es una parrilla de crucigrama de 9 x 9 con 81 cuadritos que se agrupan en nueve cuadrados interiores con una dimensión de 3 x 3. Si la solución al juego es única, el Sodoku está bien planteado. <br>
 
+
Es fácil de explicar y desarrolla el razonamiento lógico, en eso radica su popularidad y el hecho de que hoy cientos de páginas Web contienen información sobre como resolverlos. <br>
Numerosos periódicos han empezado a publicar el sudoku desde el 2005 en su sección de pasatiempos.
+
==Antecedentes  históricos ==
 
+
Su inicio se sitúa en la ciudad de [[Nueva York]] (EEUU) en los últimos años de la década de [[1970]]. Creado por el diseñador de puzzles Walter Mackey, de la empresa Dell, especializada en la elaboración de rompecabezas, quien le da el nombre de “Number Place” (El lugar de los números). <br>
== Reglas y terminología  ==
+
Por primera vez sale a la luz en la revista “Math Puzzles and Logic Problems” (Rompecabezas matemáticos y problemas lógicos), luego, en [[abril]] de [[1984]], la empresa japonesa Nikoli lo envía a [[Japón]] y lo publica en el periódico “Monthly Nikolist” con el título: "Sūji wa dokushin ni kagiru” (Los números deben estar solos). <br>
 
+
El nombre se lo debe a Kaji Maki, presidente de Nikoli. En [[1986]] la misma empresa sintetiza el nombre a "Sūdoku” (sū = número, doku = solo) y le implementa dos innovaciones que defjnitivamente le dan popularidad y la extienden a la prensa japonesa y al resto del mundo. En [[2005]] muchos periódicos lo incluyen a diario en sus páginas.
El sudoku se presenta normalmente como una tabla de 9&nbsp;×&nbsp;9, compuesta por subtablas de 3&nbsp;×&nbsp;3 denominadas "regiones" (también se le llaman "cajas" o "bloques"). Algunas celdas ya contienen números, conocidos como "números dados" (o a veces "pistas"): El objetivo es rellenar las celdas vacías, con un número en cada una de ellas, de tal forma que cada columna, fila y región contenga los números 1–9 sólo una vez. Además, cada número de la solución aparece sólo una vez en cada una de las tres "direcciones", de ahí el "los números deben estar solos" que evoca el nombre del juego.  
+
==¿Qué importancia tiene jugar Sudoku?==
 
+
Su importancia radica en que es una forma atractiva y sana de emplear el tiempo libre y para la etapa escolar constituye una herramienta de gran valor en el proceso de adquisición de los conocimientos, ya que combina la diversión con el aprendizaje, abre la mente y desarrolla la capacidad de concentrarse.
== Métodos de resolución  ==
+
==Reglas==
 
+
*Rellenar una cuadrícula de 9 × 9 celdas (81 casillas) dividida en subcuadrículas de 3 × 3 (también llamadas "cajas" o "regiones") con las cifras del 1 al 9 partiendo de algunos números ya dispuestos en algunas de las celdas. <br>
La región 3&nbsp;×&nbsp;3 de la esquina superior izquierda debe contener un 7.  
+
*Se utilizan nueve elementos diferenciados, y aunque se pueden usar colores, letras y figuras, es conveniente usar números para mayor claridad. <br>
 
+
*No se debe repetir ninguna cifra en una misma fila, columna o subcuadrícula. <br>
La estrategia para resolver este rompecabezas se puede considerar como la combinación de tres procesos: escaneo, marcado y análisis.  
+
*Un sudoku está bien planteado si la solución es única. <br>
 
+
*La resolución del problema requiere paciencia y ciertas dotes lógicas. <br>
=== Escaneo ===
+
== Métodos de resolución==  
 
+
El sudoku se presenta normalmente como una tabla de 9 × 9, compuesta por subtablas de 3 × 3 denominadas "regiones" (también se le llaman "cajas" o "bloques"). Algunas celdas ya contienen números, conocidos como "números dados" (o a veces "pistas"): El objetivo es rellenar las celdas vacías, con un número en cada una de ellas, de tal forma que cada columna, fila y región contenga los números 1–9 sólo una vez. Además, cada número de la solución aparece sólo una vez en cada una de las tres "direcciones".<br>
Rastreando a lo largo y ancho los sietes localizados en cualquier lugar de la rejilla, el jugador puede eliminar todas las celdas vacías de la esquina superior izquierda que no pueden contener un 7. Esto deja sólo una celda posible (remarcada en verde).]]
+
La solución de un sudoku siempre es un cuadrado latino, aunque el recíproco en general no es cierto ya que el sudoku establece la restricción añadida de que no se puede repetir un mismo número en una región. <br>
 
+
Es posible establecer sudokus con más de una solución y también realizar tableros iniciales de sudoku sin solución, pero no se consideran rompecabezas sudoku apropiados; como la mayor parte de los rompecabezas lógicos, se espera una solución única. <br>
=== Marcado  ===
+
Para resolver un rompecabezas la estrategia se puede considerar como la combinación de tres procesos: escaneo, marcado y análisis. <br>
 
+
'''1.Escaneo''' <br>
El escaneo viene a interrumpirse cuando no pueden descubrirse nuevos números. En este punto es necesario centrarse en algún análisis lógico. La mayoría encuentra útil guiar este análisis mediante el marcado de números candidatos en las celdas vacías. Hay dos notaciones populares: subíndices y puntos  
+
Rastreando a lo largo y ancho los siete localizados en cualquier lugar de la rejilla, el jugador puede eliminar todas las celdas vacías de la esquina superior izquierda que no pueden contener un 7. Esto deja sólo una celda posible (remarcada en verde). <br>
 
+
El escaneo viene a interrumpirse cuando no pueden descubrirse nuevos números. En este punto es necesario centrarse en algún análisis lógico. La mayoría encuentra útil guiar este análisis mediante el marcado de números candidatos en las celdas vacías. Hay dos notaciones populares: subíndices y puntos. <br>
En la notación de subíndice, los números candidatos se escriben en pequeño en las celdas. La desventaja es que los puzles originales se publican en periódicos que habitualmente no dejan demasiado espacio para acomodar más que unos pocos dígitos. Si se usa esta notación, los resolutores crean, a menudo, una copia más grande del puzzle y emplean un lápiz afilado.  
+
'''2.Marcado''' <br>
 
+
En la notación de subíndice, los números candidatos se escriben en pequeño en las celdas. La desventaja es que los puzzles originales se publican en periódicos que habitualmente no dejan demasiado espacio para acomodar más que unos pocos dígitos. Si se usa esta notación, los resolutores crean, a menudo, una copia más grande del puzzle y emplean un lápiz afilado. <br>
La segunda notación es un patrón de puntos con un punto en la esquina superior izquierda representando un 1 y un punto en la esquina inferior derecha representando un 9. Esta notación tiene como ventaja que puede usarse en el puzle original. Se requiere destreza para el emplazamiento de los puntos, porque la existencia de puntos desplazados o marcas inadvertidas lleva, inevitablemente, a confusión y no son fáciles de borrar sin añadir más confusión.  
+
La segunda notación es un patrón de puntos con un punto en la esquina superior izquierda representando un 1 y un punto en la esquina inferior derecha representando un 9. Esta notación tiene como ventaja que puede usarse en el puzzle original. Se requiere destreza para el emplazamiento de los puntos, porque la existencia de puntos desplazados o marcas inadvertidas lleva, inevitablemente, a confusión y no son fáciles de borrar sin añadir más confusión. <br>
 
+
'''3. Análisis'''<br>
=== Análisis ===
+
'''Hay dos aproximaciones principales:''' <br>
 
+
'''Eliminación:''' el progreso se realiza mediante la sucesiva eliminación de números candidatos para una o más celdas, hasta dejar sólo una elección. Después de lograr cada respuesta, debe realizarse un nuevo escaneo (habitualmente comprobando el efecto del último número). Hay una serie de tácticas de eliminación. Una de las más comunes es el "borrado del candidato no coincidente". Las celdas con idéntica configuración de números candidatos se dice que coinciden si la cantidad de números candidatos en cada una es igual al número de celdas que los contienen. Por ejemplo lápiz y una goma. Esta aproximación puede ser desaprobada por puristas lógicos por demasiado Ensayo y error pero puede llegar a soluciones claras y rápidamente. <br>
Hay dos aproximaciones principales:  
+
'''Idealmente:''' Necesita encontrar una combinación de técnicas que eviten alguno de los inconvenientes de los elementos de arriba. El recuento de regiones, filas y columnas puede resultar aburrido. Escribir números candidatos en celdas vacías puede consumir demasiado tiempo. La aproximación "y–si" puede ser confusa a menos que se sea bien organizado. <br>
 
+
== Resolución por ordenador ==
*En '''eliminación''', el progreso se realiza mediante la sucesiva eliminación de números candidatos para una o más celdas, hasta dejar sólo una elección. Después de lograr cada respuesta, debe realizarse un nuevo escaneo (habitualmente comprobando el efecto del último número). Hay una serie de tácticas de eliminación. Una de las más comunes es el "borrado del candidato no coincidente". Las celdas con idéntica configuración de números candidatos se dice que coinciden si la cantidad de números candidatos en cada una es igual al número de celdas que los contienen. Por ejemplo lápiz y una goma. Esta aproximación puede ser desaprobada por puristas lógicos por demasiado Ensayo y error pero puede llegar a soluciones claras y rápidamente.
 
 
 
Idealmente, se necesita encontrar una combinación de técnicas que eviten alguno de los inconvenientes de los elementos de arriba. El recuento de regiones, filas y columnas puede resultar aburrido. Escribir números candidatos en celdas vacías puede consumir demasiado tiempo. La aproximación "y–si" puede ser confusa a menos que se sea bien organizado. El quid de la cuestión es encontrar una técnica que minimice el recuento, el marcado y e
 
 
 
== Resolución por ordenador ==
 
 
 
 
Algunos programas que emulan la resolución humana, permiten estimar la dificultad que tendrá un humano para encontrar la solución.  
 
Algunos programas que emulan la resolución humana, permiten estimar la dificultad que tendrá un humano para encontrar la solución.  
 
+
Para la implementación del resolvedor de sudokus se utiliza la clase vector (fácilmente transformable en un array clásico) y tres funciones:  
Para la implementación del resolvedor de sudokus utilizaremos la clase vector (fácilmente transformable en un array clásico) y tres funciones:  
+
*'''Una llamada inicial: ‘‘‘simplemente se encarga de llamar a la función recursiva. Para darle más utilidad retornará un booleano que indicará si se ha encontrado alguna solución al sudoku.  
 
+
*'''Una función recursiva: ‘‘‘se encarga del proceso de ir probando números. Incluye un parámetro de entrada/salida que indica si se ha encontrado alguna solución.  
*Una llamada inicial: simplemente se encarga de llamar a la función recursiva. Para darle más utilidad retornará un booleano que indicará si se ha encontrado alguna solución al sudoku.  
+
*'''El comprobador de validez: ‘‘‘simplemente es una función que retorna un booleano indicando si un valor puede estar en un sitio indicado.  
*Una función recursiva: se encarga del proceso de ir probando números. Incluye un parámetro de entrada/salida que indica si se ha encontrado alguna solución.  
 
*El comprobador de validez: simplemente es una función que retorna un booleano indicando si un valor puede estar en un sitio indicado.
 
 
 
 
El vector contendrá enteros codificando como "0" los lugares a rellenar (los "–") y como su propio valor numérico los valores preestablecidos. Al final de la implementación del resolvedor se propone una acción que lee un sudoku como el propuesto arriba y lo transforma en la matriz numérica.  
 
El vector contendrá enteros codificando como "0" los lugares a rellenar (los "–") y como su propio valor numérico los valores preestablecidos. Al final de la implementación del resolvedor se propone una acción que lee un sudoku como el propuesto arriba y lo transforma en la matriz numérica.  
 
+
'''Además, se utilizan las siguientes definiciones y constantes: ‘‘‘ 
Además, utilizaremos las siguientes definiciones y constantes:&nbsp;
+
const int FILS = 9; // Filas de un sudoku<br>
<pre>const int FILS = 9; // Filas de un sudoku
+
const int COLS = 9; // Columnas de un sudoku<br>
const int COLS = 9; // Columnas de un sudoku
+
typedef vector< vector<int> > Matriz; // Definición de Matriz<br>
 
+
'''Llamada inicial:'''<br>
typedef vector&lt; vector&lt;int&gt; &gt; Matriz; // Definición de Matriz
+
bool rellenar(Matriz& v) {bool tr = false; <br>
</pre>  
 
<br>Llamada inicial:&nbsp;
 
<pre>bool rellenar(Matriz&amp; v) {
 
bool tr = false;
 
 
rellenar(v, 0, 0, tr); // V y TR són parámetros de E/S
 
rellenar(v, 0, 0, tr); // V y TR són parámetros de E/S
return tr;
+
return tr;}
}
+
'''Función recursiva:'''<br>
 
+
nst Matriz& v, int fil, int col) { for (return false; }} return true; }</source> <br>
</pre>  
+
== Niveles de dificultad en la resolución por ordenador ==
Función recursiva:nst Matriz&amp; v, int fil, int col) { for (return false; } } return true; }&lt;/source&gt;
+
Los programas informáticos que resuelven sudokus pueden estimar la dificultad que tiene un humano para encontrar la solución, basándose en la complejidad de las técnicas de resolución necesarias. Esta estimación permite a los editores adaptar sus sudokus para personas con diferente experiencia resolutoria. Algunas versiones "en línea" (online) también ofrecen varios niveles de dificultad. <br>
 
+
== Construcción ==
Por si se tiene alguna duda, aquí se propone un método para leer un sudoku como el descrito arriba (caracteres de números y "–") y lo transforma en una matriz numérica de 0 (valores a introducir) y números (preestablecidos).&nbsp;
+
[[Image: sudoku-3d.PNG|thumb|RIGHT|185x141px|Juego Sudoku]]
<pre>// Precondición: V es una Matriz de tamaño FILS x COLS
+
La construcción de un rompecabeza sudoku puede ser realizada a mano eficientemente predeterminando las posiciones de los números dados y asignándoles valores para realizar un proceso deductivo. <br>
void leer(Matriz&amp; v) {
+
Tal indefinido dados se puede suponer que no tienen ningún valor particular, mientras se le da un valor diferente antes de que se complete la construcción, el encargado de resolver será capaz de hacer las mismas deducciones derivadas de tales supuestos, como en ese momento, el dado es muy mucho más definido como algo más. Esta técnica da al constructor un mayor control sobre el flujo de resolución de puzzles, líder en el alvistas solucionador de sudokus por compuestas íntegramente. <br>
char x;
+
El desafío para los programadores de sudokus es enseñar a un programa cómo construir rompecabezas inteligentes, de manera que no se puedan distinguir de aquellos realizados por humanos; Wayne Gould necesitó retocar su popular programa durante seis años para creer que había alcanzado ese nivel. <br>
for (int i = 0; i &lt; FILS; ++i) {
+
== Fuentes ==
for (int c = 0; c &lt; COLS; ++c) {
+
*[http://www.websudoku.com Sitio Oficial Sudoku] 
cin &gt;&gt; x;
+
*[http://www.sudoku-online.org Sudoku y Puzzles] 
v[i][c] = x=='–'&nbsp;? 0:x&amp;0xF;
+
*[http://www.publispain.com/sudoku/que_es_sudoku.html Sudoku] 
}
+
*[http://www.playsudoku.biz/historia-sudoku.aspx Historia Sudoku]
}
 
}
 
 
 
</pre>  
 
== Niveles de dificultad ==
 
 
 
Los programas informáticos que resuelven sudokus pueden estimar la dificultad que tiene un humano para encontrar la solución, basándose en la complejidad de las técnicas de resolución necesarias. Esta estimación permite a los editores adaptar sus sudokus para personas con diferente experiencia resolutoria. Algunas versiones "en línea" (online) también ofrecen varios niveles de dificultad.  
 
 
 
== Construcción ==
 
 
 
Es posible establecer sudokus con más de una solución y también realizar tableros iniciales de sudoku sin solución, pero no se consideran rompecabezas sudoku apropiados; como la mayor parte de los rompecabezas lógicos, se espera una solución única.  
 
 
 
La construcción de un rompecabeza sudoku puede ser realizada a mano eficientemente predeterminando las posiciones de los números dados y asignándoles valores para realizar un proceso deductivo. Tal indefinido dada se puede suponer que no tienen ningún valor particular, mientras se le da un valor diferente antes de que se complete la construcción, el encargado de resolver será capaz de hacer las mismas deducciones derivadas de tales supuestos, como en ese momento, el dado es muy mucho más definido como algo más. Esta técnica da al constructor un mayor control sobre el flujo de resolución de puzzles, líder en el alvistas solucionador de sudokus por compuestas íntegramente.  
 
 
 
Los sudoku [[Nikoli]] se construyen a mano,y el nombre del autor aparece en los créditos junto a cada rompecabeza; los números dados siempre se encuentran en forma de un patrón simétrico. Los rompecabezas ''Number Place Challenger'' de Dell (véase Variantes más abajo) también citan los créditos del autor. Los rompecabezas sudoku que aparecen en la mayoría de los periódicos del Reino Unido aparentemente son generados por ordenador, pero emplean probables en sudokus generados por ordenador. El desafío para los programadores de sudokus es enseñar a un programa cómo construir rompecabezas inteligentes, de manera que no se puedan distinguir de aquellos realizados por humanos; Wayne Gould necesitó retocar su popular programa durante seis años para creer que había alcanzado ese nivel.  
 
 
 
<br>  
 
  
 
[[Category:Algoritmos]]
 
[[Category:Algoritmos]]

última versión al 23:13 21 feb 2015

Sudoku backtracking
Información sobre la plantilla
Sudoku.jpg
Concepto:Es un rompecabezas matemático basado en la búsqueda de la combinación numérica perfecta. El término proviene de la lengua japonesa (数独, sūdoku).


Sudoku. Entretenimiento que se inicia en los Estados Unidos y se populariza en Japón en 1986. Desde aquí se produce su innegable salto al ámbito internacional en el 2005, fecha en que numerosos periódicos lo comienzan a publicar en su sección de pasatiempos. El juego es una parrilla de crucigrama de 9 x 9 con 81 cuadritos que se agrupan en nueve cuadrados interiores con una dimensión de 3 x 3. Si la solución al juego es única, el Sodoku está bien planteado.
Es fácil de explicar y desarrolla el razonamiento lógico, en eso radica su popularidad y el hecho de que hoy cientos de páginas Web contienen información sobre como resolverlos.

Antecedentes históricos

Su inicio se sitúa en la ciudad de Nueva York (EEUU) en los últimos años de la década de 1970. Creado por el diseñador de puzzles Walter Mackey, de la empresa Dell, especializada en la elaboración de rompecabezas, quien le da el nombre de “Number Place” (El lugar de los números).
Por primera vez sale a la luz en la revista “Math Puzzles and Logic Problems” (Rompecabezas matemáticos y problemas lógicos), luego, en abril de 1984, la empresa japonesa Nikoli lo envía a Japón y lo publica en el periódico “Monthly Nikolist” con el título: "Sūji wa dokushin ni kagiru” (Los números deben estar solos).
El nombre se lo debe a Kaji Maki, presidente de Nikoli. En 1986 la misma empresa sintetiza el nombre a "Sūdoku” (sū = número, doku = solo) y le implementa dos innovaciones que defjnitivamente le dan popularidad y la extienden a la prensa japonesa y al resto del mundo. En 2005 muchos periódicos lo incluyen a diario en sus páginas.

¿Qué importancia tiene jugar Sudoku?

Su importancia radica en que es una forma atractiva y sana de emplear el tiempo libre y para la etapa escolar constituye una herramienta de gran valor en el proceso de adquisición de los conocimientos, ya que combina la diversión con el aprendizaje, abre la mente y desarrolla la capacidad de concentrarse.

Reglas

  • Rellenar una cuadrícula de 9 × 9 celdas (81 casillas) dividida en subcuadrículas de 3 × 3 (también llamadas "cajas" o "regiones") con las cifras del 1 al 9 partiendo de algunos números ya dispuestos en algunas de las celdas.
  • Se utilizan nueve elementos diferenciados, y aunque se pueden usar colores, letras y figuras, es conveniente usar números para mayor claridad.
  • No se debe repetir ninguna cifra en una misma fila, columna o subcuadrícula.
  • Un sudoku está bien planteado si la solución es única.
  • La resolución del problema requiere paciencia y ciertas dotes lógicas.

Métodos de resolución

El sudoku se presenta normalmente como una tabla de 9 × 9, compuesta por subtablas de 3 × 3 denominadas "regiones" (también se le llaman "cajas" o "bloques"). Algunas celdas ya contienen números, conocidos como "números dados" (o a veces "pistas"): El objetivo es rellenar las celdas vacías, con un número en cada una de ellas, de tal forma que cada columna, fila y región contenga los números 1–9 sólo una vez. Además, cada número de la solución aparece sólo una vez en cada una de las tres "direcciones".
La solución de un sudoku siempre es un cuadrado latino, aunque el recíproco en general no es cierto ya que el sudoku establece la restricción añadida de que no se puede repetir un mismo número en una región.
Es posible establecer sudokus con más de una solución y también realizar tableros iniciales de sudoku sin solución, pero no se consideran rompecabezas sudoku apropiados; como la mayor parte de los rompecabezas lógicos, se espera una solución única.
Para resolver un rompecabezas la estrategia se puede considerar como la combinación de tres procesos: escaneo, marcado y análisis.
1.Escaneo
Rastreando a lo largo y ancho los siete localizados en cualquier lugar de la rejilla, el jugador puede eliminar todas las celdas vacías de la esquina superior izquierda que no pueden contener un 7. Esto deja sólo una celda posible (remarcada en verde).
El escaneo viene a interrumpirse cuando no pueden descubrirse nuevos números. En este punto es necesario centrarse en algún análisis lógico. La mayoría encuentra útil guiar este análisis mediante el marcado de números candidatos en las celdas vacías. Hay dos notaciones populares: subíndices y puntos.
2.Marcado
En la notación de subíndice, los números candidatos se escriben en pequeño en las celdas. La desventaja es que los puzzles originales se publican en periódicos que habitualmente no dejan demasiado espacio para acomodar más que unos pocos dígitos. Si se usa esta notación, los resolutores crean, a menudo, una copia más grande del puzzle y emplean un lápiz afilado.
La segunda notación es un patrón de puntos con un punto en la esquina superior izquierda representando un 1 y un punto en la esquina inferior derecha representando un 9. Esta notación tiene como ventaja que puede usarse en el puzzle original. Se requiere destreza para el emplazamiento de los puntos, porque la existencia de puntos desplazados o marcas inadvertidas lleva, inevitablemente, a confusión y no son fáciles de borrar sin añadir más confusión.
3. Análisis
Hay dos aproximaciones principales:
Eliminación: el progreso se realiza mediante la sucesiva eliminación de números candidatos para una o más celdas, hasta dejar sólo una elección. Después de lograr cada respuesta, debe realizarse un nuevo escaneo (habitualmente comprobando el efecto del último número). Hay una serie de tácticas de eliminación. Una de las más comunes es el "borrado del candidato no coincidente". Las celdas con idéntica configuración de números candidatos se dice que coinciden si la cantidad de números candidatos en cada una es igual al número de celdas que los contienen. Por ejemplo lápiz y una goma. Esta aproximación puede ser desaprobada por puristas lógicos por demasiado Ensayo y error pero puede llegar a soluciones claras y rápidamente.
Idealmente: Necesita encontrar una combinación de técnicas que eviten alguno de los inconvenientes de los elementos de arriba. El recuento de regiones, filas y columnas puede resultar aburrido. Escribir números candidatos en celdas vacías puede consumir demasiado tiempo. La aproximación "y–si" puede ser confusa a menos que se sea bien organizado.

Resolución por ordenador

Algunos programas que emulan la resolución humana, permiten estimar la dificultad que tendrá un humano para encontrar la solución. Para la implementación del resolvedor de sudokus se utiliza la clase vector (fácilmente transformable en un array clásico) y tres funciones:

  • Una llamada inicial: ‘‘‘simplemente se encarga de llamar a la función recursiva. Para darle más utilidad retornará un booleano que indicará si se ha encontrado alguna solución al sudoku.
  • Una función recursiva: ‘‘‘se encarga del proceso de ir probando números. Incluye un parámetro de entrada/salida que indica si se ha encontrado alguna solución.
  • El comprobador de validez: ‘‘‘simplemente es una función que retorna un booleano indicando si un valor puede estar en un sitio indicado.

El vector contendrá enteros codificando como "0" los lugares a rellenar (los "–") y como su propio valor numérico los valores preestablecidos. Al final de la implementación del resolvedor se propone una acción que lee un sudoku como el propuesto arriba y lo transforma en la matriz numérica. Además, se utilizan las siguientes definiciones y constantes: ‘‘‘ const int FILS = 9; // Filas de un sudoku
const int COLS = 9; // Columnas de un sudoku
typedef vector< vector<int> > Matriz; // Definición de Matriz
Llamada inicial:
bool rellenar(Matriz& v) {bool tr = false;
rellenar(v, 0, 0, tr); // V y TR són parámetros de E/S return tr;} Función recursiva:
nst Matriz& v, int fil, int col) { for (return false; }} return true; }</source>

Niveles de dificultad en la resolución por ordenador

Los programas informáticos que resuelven sudokus pueden estimar la dificultad que tiene un humano para encontrar la solución, basándose en la complejidad de las técnicas de resolución necesarias. Esta estimación permite a los editores adaptar sus sudokus para personas con diferente experiencia resolutoria. Algunas versiones "en línea" (online) también ofrecen varios niveles de dificultad.

Construcción

Juego Sudoku

La construcción de un rompecabeza sudoku puede ser realizada a mano eficientemente predeterminando las posiciones de los números dados y asignándoles valores para realizar un proceso deductivo.
Tal indefinido dados se puede suponer que no tienen ningún valor particular, mientras se le da un valor diferente antes de que se complete la construcción, el encargado de resolver será capaz de hacer las mismas deducciones derivadas de tales supuestos, como en ese momento, el dado es muy mucho más definido como algo más. Esta técnica da al constructor un mayor control sobre el flujo de resolución de puzzles, líder en el alvistas solucionador de sudokus por compuestas íntegramente.
El desafío para los programadores de sudokus es enseñar a un programa cómo construir rompecabezas inteligentes, de manera que no se puedan distinguir de aquellos realizados por humanos; Wayne Gould necesitó retocar su popular programa durante seis años para creer que había alcanzado ese nivel.

Fuentes