Codigo fuente de mi Sudoku Solver (en C#)
Porque lo prometido es deuda, aquí está el código fuente de mi Sudoku Solver. Ahí van 48 horas hombre de trabajo para su deleite (o no). Simplemente desempaqueten el archivo ZIP y abran con Visual C# el archivo Sudoku.SLN que está en la raíz. Ejecuten (presionen F5) y listo. El enfoque es en resolver el Sudoku, no en generarlos. Por ello los botones de radio debajo de "Nuevo Sudoku" siempre "generan" el mismo tablero. Son solo de prueba. En una siguiente versión (creo que dentro de 5 versiones más bien), esto funcionará. Nuevamente, el espíritu de este programa es ayudarte a resolver el Sudoku del periódico que tienes en frente. Cuando te atraques, el te dice qué lógica aplicó para encontrar la siguiente casilla. Para ingresar un tablero se utiliza el cuadro de texto grande que está en la parte más alta de la pantalla. Se ponen todos los números como por ejemplo:
000000010136958004000000008000006900710002800860000000300010002641000307007600050
(los ceros pueden ser reemplazados por espacios en blanco, la letra 'x' o un guión bajo '_'. Además, los dígitos se pueden agrupar por línea (grupos de 9) separándolos entre sí con un '+', un '-' o un '/')
Luego se presiona "Cargar Sudoku" y tenemos una pantalla como la que se ve en la figura.
El botón "Resolver todo" hace el mejor esfuerzo por resolver el tablero completo.
El botón "Siguiente casilla", que es el más útil para mí, aplica la lógica abajo explicada, ya sea para encontrar el valor de una de las casillas faltantes (el tablero tiene 81 casillas en total), o para eliminar un candidato de una de las casillas (me falta urgentemente una interfase para mostrar los candidatos). Además, producto de este proceso en la parte inferior de la pantalla se muestra un mensaje diciendo la lógica que se aplicó para encontrar el valor mencionado o eliminar un candidato.
El programa aplica las siguientes técnicas de solución, en orden:
- Naked Single
- Hidden Single
- Naked Pair
- Locked Candidates Claiming
- Locked Candidates Pointing
- XWing
- Hidden Pair (filas y columnas, falta en cajas)
Estas técnicas representan un subconjunto muy básico de herramientas para resolver Sudokus que, sin embargo, resuelven la mayoría de los Sudokus publicados en la prensa local.
Por supuesto que ya existen programas extraordinarios y gratuitos para resolver Sudokus, uno de los más potentes (a mi juicio) es SudoCue. Sin embargo, el objetivo de crear mi propio programa fue de aprender a programar en C#.
Modifiquen, revisen, envíenme sus comentarios y, sobre todo, ¡a aprender C#!
P.D. Para quienes no desean el código fuente y quieren directamente ejecutar el programa, necesitan instalar el .Net Framework 2.0. Aquí está el ejecutable libre de malware según mi mejor esfuerzo.
Comments
Anonymous
January 01, 2003
Gracias a todos por los comentarios. Evidentemente, el programa no está terminado. La interfase no es muy amigable, y no puede resolver cualquier sudoku. Solo implementa algunas técnicas de razonamiento simple para hacerlo. El útlimo recurso que debo implementar es el de "fuerza bruta" para sacar la solución. Sin embargo, antes de llegar a eso, faltan otros algoritmos lógicos para sacar más casillas.Anonymous
January 01, 2003
Amigo, ayúdanos mas con un post explicando como usas Microsoft Solver Foundation.. Me interesa conocerlo, no para hacer Sudoku, si no para fines generales.
Gracias y Saludos!Anonymous
June 25, 2010
Te pasaste compadre, una joya su programa.Anonymous
September 07, 2010
uff lo voy a checar,si funciona estaré muy agradecido,en la escuela nos lo encargaron pero nunca entendi como hacerlo;)Anonymous
September 14, 2010
hey brother cheke tu sudoku ejecutable y tiene un detallito cuando seleccionas ya sea regular dificill, muy dificil bueno cuando le das clik resolver todo , marca error,Anonymous
October 31, 2010
Pero no se puede jugar =( al menos no le entendi nada de lo que aparece, por que no valida =(Anonymous
November 08, 2010
The comment has been removedAnonymous
November 29, 2010
Super bien tu aporte mil gracias por gente como ti es que segui SistemasAnonymous
February 12, 2011
descargue el .exe y la carpeta pero nada solo me aparecen algunos archivos .exe y yo necesito el codigo por favor me puedes decir que puedo acer para ver solo el codigo?Anonymous
April 25, 2013
The comment has been removedAnonymous
May 23, 2014
por favor facilita el linck de descargaAnonymous
June 11, 2014
y de donde lo descargo?Anonymous
September 27, 2014
Buen aporte, solo falta el certificado de firma para poderlo ejectuar cuando descargas el codigo fuente pero puedes entenderlo muy bien, y jugarlo si descargas la version ejecutable, aunque el boton de solucion no funcione, y sea muy escaso de nivel... ya que es mas efectivo utilizar un random pero mas rapido, y sencillo asignarlas por defautl.
Se agradece el aporte!