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.