Primera mitad del algoritmo: –
1) comienza con un tablero vacío
2) agregue un número aleatorio en una de las celdas libres (la celda se elige al azar y el número se elige al azar de la lista de números válidos para esta celda de acuerdo con las reglas de SuDoKu)
3) Use el solucionador de retroceso para verificar si la placa actual tiene al menos una solución válida. Si no, deshaga el paso 2 y repita con otro número y celda. Tenga en cuenta que este paso puede producir placas válidas completas por sí solo, pero de ninguna manera son al azar.
- ¿Cómo se resuelve un rompecabezas de división larga de Feynman?
- ¿Puedes sugerir algunas preguntas difíciles o acertijos?
- ¿Cuál es la forma precisa de resolver la tercera capa del cubo de Rubik?
- ¿Cuál es la solución para el siguiente rompecabezas de Feynman escrito en división larga?
- ¿Es posible resolver un rompecabezas blanco?
4) Repita hasta que el tablero esté completamente lleno de números.
Segunda mitad del algoritmo: –
1) comience con un tablero completo y válido (lleno de 81 números)
2) haga una lista de las 81 posiciones de las celdas y baraje al azar
3) Mientras la lista no esté vacía, tome la siguiente posición de la lista y elimine el número de la celda relacionada
4) pruebe la unicidad utilizando un solucionador rápido (con retroceso si es necesario). Mi solucionador puede contar todas las soluciones, pero se detiene cuando encuentra más de 1 solución.
5) Si el tablero actual tiene solo una solución, vaya al paso 3) y repita.
6) Si el tablero actual tiene más de una solución, deshaga la última eliminación (paso 3) y continúe el paso 3 con la siguiente posición de la lista
7) detente cuando hayas probado las 81 posiciones.
Esto le brinda no solo tableros únicos, sino tableros donde no puede eliminar más números sin destruir la singularidad de la solución.