[ Thread Index |
Date Index
| More lists.tuxfamily.org/cllfst Archives
]
- To: cllfst@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [cllfst] sudoku
- From: "Zaki Jenhani" <zakjen@xxxxxxxxx>
- Date: Sun, 3 Sep 2006 10:40:01 +0200
- Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; b=UT+eCSW5qAE4l2uyP8z6TnO3tR0jswAtoMIumBnCjGaDGtE+QynpnMQGsQPSIU61iZ0UCjFVZHTEBSWSk5O+208hjPaCsPqS0xBfr7/qx5Z0+MlkoBH1syqlTDEHVdU7t7xaAx1whujPyCwr97QC5uL9rJvlcM1o46nIZbxt/cw=
Merci pour tes commentaires:
Pour les commentaires, tu as raison, mais ça me donne l'impression de rédiger un rapport, c'est pour cela que je ne l'ai pas fait.
Pour les zéro, j'ai essayé de dire ça dans un commentaire au tout debut du code; 0 = les cases vides.
Le but du programme est de résoudre les SUDOKU. Si tu le donne un SUDOKU pas complet avec des valeur entre 0->9 où les zéro représentent des case vide (à remplir par le programme), il te résout le problème. Ouvre un journal tu va en trouver plein. Je l'ai testé avec des sudoku proposé dans qq journaux, et il marche.
pour la division 3*(i/3):
i/3 : quand il s'agit des entier l'opérateur "/" joue le du "div" en pascal; ça renvoie le quotient de la division euclidienne
exemple: i=5 => i/3 = 1
Pour la structure dynamique:
Le principe de résolution que j'ai adopte est similaire à celle de prolog (arbre de recherche).
J'explique: je parcours tout mon tableau [9,9] (se trouvant dans un enregistrement), si je trouve une case de valeur 0 (c'est une case vide, il faut la remplir), en prolog, il faut unifier, en C il faut lui affecter une valeur possible; je crée alors un autre sudoku (pour préserver le SUDOKU père, pour pouvoir tester de nouvelle valeurs de cette case) que je le lis au fils du sudoku courant (père) sa propre copie, en mettant dans la cette case vide (courante) la première valeur possible dans cette case,
S'il n'y a pas de valeur possible c'est que la configuration du SUDOKU doit être abandonner, il n'y a pas de solution, il faut donc revenir en arrière
s'il n'y a pas de problème jusqu'à mai tenant, on continue le remplissage des reste des cases avec des appels récursifs!
J'ai essayé d'expliquer mon travail, en bref... J'espère que j'étais plus clair!
essayer de tester des SUDOKU des journaux où même de proposer des pb vous même.
Juste une petite remarque, il se peut que le problème que vous donnez ne possède pas de solutions, celles des journaux, la solution est unique!