![]() |
Crear Sudoku.
Hola:
He resuelto muchos Sudokus y ahora quisiera hacer un programa que los cree. ¿Alguien conoce el algoritmo para crear Sudokus para todos los niveles de dificultad? He buscado con todas las frases posibles pero no he tenido éxito. Gracias. |
|
1 Archivos Adjunto(s)
Cita:
:D Probaste a buscar la palabra Sudoku http://www.clubdelphi.com/foros/sear...earchid=583607 Porque a mi me salen un par de hilos en los que se trata el tema de los Sudokus. Por ejemplo esto dos mios. http://www.clubdelphi.com/foros/showthread.php?t=32663 http://www.clubdelphi.com/foros/show...11&postcount=5 El algoritmo que utilizo para generar los Sudokus, los divide en 2 niveles de dificultad, los fáciles, en los que todos los números resultan obvios, y los difíciles, donde algunos números no resultan obvios y hay que probar con varios números. Ignoro si existe algún tipo de clasificación estándar para los sudokus en su nivel de dificultad, si es así explícalo aquí e intentaremos buscar un algoritmo que se ajuste a esa norma. Aprovecho para subir, la ultima versión. Ahora se pueden imprimir los sudokus, e hice un par de cambios en los menús. |
Una busqueda sencilla en los foros y llegarás aquí.
Revisa los ejemplos. EDITO: ¡¡Qué lento soy....!!! |
JAJAJAJA :D :D :D
Ala quéjate, tienes el mismo hilo por triplicado!!! Unos que son lentos y otros que se enrollan más que... Buen rollo. Por cierto, no pienso hacer comentarios al respecto sobre marcadores, que luego la liamos, eh? :D Saludos |
Interesante. Voy a estudiar esos códigos, aunque espero cumplan con las debidas reglas para que los Sudokus creados puedanser resueltos.
Gracias. |
Cita:
|
¿Qué criterio has tomado para saber qué número sacar y qué otro dejar? El crear el tablero complero no hay problema, mi problema parte desde saber cuál de los números extraer y cuál dejarlos escritos, cuántos de ellos debe ser como máximo.
|
Si te parece bien, vamos a poner un poco de código. Para resumir partimos de los siguiente:
Código:
El tipo TTablero es una matriz de 9x9
Como ves primero rellenamos la primera fila del tablero con números del 0 al 9 de forma aleatoria pero respetando las normas a la hora de su colocación. Entonces mandamos el tablero a resolver, esto nos devuelve un tablero completamente lleno. Ahora es cuando empezamos a quitar números, primero quitamos números Obvios, es decir, solo quitamos números que se van a poder averiguar aplicando las normas. No se cuantos exactamente podemos quitar, pero por experiencia no muchos mas de 30, seguro que si buscas por internet encuentras algún matemático que te diga el numero exacto :D Después de todo lo anterior tenemos un Sudoku, que con solo aplicar rigurosamente las normas puede ser resuelto. Para añadirle "dificultad", quitamos un par de números "no Obvios", de esta manera obligamos al jugador a aplicar el método de prueba y error para resolver el Sudoku, teniendo incluso que volver sobre sus pasos para resolverlo. El numero de "no Obvios" se lo paso como parámetro a la función, pudiendo así con una dificultad 0 crear Sudokus en los que la resolución es Obvia y no hay nunca que retroceder, si se aplican bien las reglas. :D Caramba como me he liado. |
Clarísimo. Gracias. Empezaré con mi propio programa.
|
Cita:
|
La franja horaria es GMT +2. Ahora son las 12:45:25. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi