Partager via


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.

Sudoku interfase

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 removed

  • Anonymous
    November 29, 2010
    Super bien tu aporte mil gracias por gente como ti es que segui Sistemas

  • Anonymous
    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 removed

  • Anonymous
    May 23, 2014
    por favor facilita el linck de descarga

  • Anonymous
    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!