Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.
Menu
Calculatrices
Graph 35 à 100
Graph 25+Pro/25+E/25+E II
Graph 35+USB/75(+E)/85/95 SD
Graph 100(+)
Classpad 300/330(+)
fx-CG 10/20 (Prizm)
Classpad 400(+E)
Graph 90+E
fx-92+ SC
Liens
¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Jeux >> Graph 35 à 100 >> Divers >> Sudo-solveur
Sudo-solveur
Version : 2.2 Taille : 7224 octets Ajouté le : 2013-08-18 14:53 Modifié le : 2013-11-09 15:41
Auteur et posteur :
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message
Planète Casio - Jeu Casio - Sudo-solveur - TheProg - Calculatrices
Nombre de visites sur cette page : 8959
Score au progrank : 36
Pas encore de note !
Vous devez être connecté(e) pour noter (inscription).
1329 téléchargements | Soumettre un test


Description :

Salut,
Un solveur pour sudoku assez simple pour le moment qui peut résoudre des sudokus de faciles a moyens (ça dépends des livres ).

Il y a aussi un générateur de grille mais il est pas encore très performant (environ 10 minutes )

Si vous avez des idées pour permettre au programme de résoudre des sudokus difficiles ou de générer plus vite je suis preneur

Lancer "r S.INIT" pour la première utilisation (MAT A, MAT B, MAT D, PICT 1 )

Amélioration
   30%


Nouveau remplissage de la grille grâce à Alphacreator

Nouveau système de résolution grâce aux probabilitées
Ajout d'un générateur de grilles

Ajout de la version 1.1 de l'add-in ( bluffé par la rapidité ) le generateur est HS pour le moment

Correction de bug dans l'add-in


Commentaires :

Pages: Précédente | 1, 2, 3, 4, 5 | Suivante

Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message
Posté le 06-11-2013 à 18:54 | #
C'est bon mon algorithme marche hein! (le récursif)
Effectivement la méthode de mon prof c'est de faire au hasard, mais alors... Pourquoi ne le fais-tu pas?

Si j'ai bien compris tu dresses la liste des valeurs admissibles pour chaque case et tu les rentres là où il n'y en a qu'une, et tu adaptes celles qui restent...?

Eh bien quand il bloque, hop tu tentes au hasard sur la case, à la rigueur en retenant la position de la case et la valeur que tu as rentré.
Si ça rebug, soit tu refais la même avec une autre case (tu détermines arbitrairement combien de fois tu le fais), et sinon tu reviens à la case où tu avais tenté au pif, et tu essayes avec l'admissible suivant!

Du coup ça peut facilement te débloquer sur pas mal de grille, mais il y en aura toujours qui bloqueront...

En fait ça ressemble énormément à mon propre programme récursif!
Sauf que lui il est exact car il peut faire le "test au pif" une infinité de fois!

Donc voilà c'est ce que je te conseille, de mettre un peu d'aléatoire "maîtrisé" dans ton programme. Maîtrisé au sens que tu retiens toujours la position pour pouvoir rechanger au cas où!



Pour Purobaz' si tu passes par là:

En réfléchissant à la complexité de mon algorithme de sudoku, avec un pote on s'est dit qu'il n'y avait que 9^81 possibilités maximum! Donc le nombre d'essais est borné!

Du coup j'ai dit à mon prof:
"- Monsieur j'ai fait un solveur de sudokus en O(1)!
- Ah c'est pas mal pour un problème NP-Complet..."

TsuneoHors ligneMembrePoints: 973 Défis: 51 Message
Posté le 06-11-2013 à 23:10 | #
Alex_1186, soit tu es un génie, soit tu t'es totalement planté haha
Je sais pas pourquoi, je penche pour la deuxième solution...

En passant, cet article sur Wikipédia est assez intéressant : http://fr.wikipedia.org/wiki/Math%C3%A9matiques_du_Sudoku
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message
Posté le 06-11-2013 à 23:26 | #
Basique = ta mothode est très complique
En effet il faut tout enregistrer, créer une seconde matrice, et encore une pour coordonné et valeurs ...
Donc je pense que niveau rapidité/fiabilité je suis bien
Après en add-in tout est plus facil (même si je me le suis un peu raté )
DodormeurHors ligneAncien rédacteurPoints: 3965 Défis: 84 Message
Posté le 06-11-2013 à 23:33 | #
en add-in, il n'y a pas besoin de faire des optimisations de taré pour avoir quelque chose de fluide, a moins de faire un moteur 3D ou des trucs de taré, ce sera toujours hyper rapide

(c'est d'ailleurs pour ça que je trouve qu'il est plus simple de programmer en C qu'en basic )
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message
Posté le 07-11-2013 à 20:07 | #
Tsuneo: euh.......
Tu crois que ça ne fonctionne pas pour montrer que P=NP...?
Pourtant je me voyais déjà avec le million en poche... Tant pis!

Theprog: Ma méthode n'est pas très compliquée!
Tu crées une liste où tu sauvegardes les coordonnées et la valeur des chiffres que tu rentres au hasard (quand tu es bloqué), et quand tu veux revenir en arrière tu peux retrouver les valeurs que tu as entrées, les modifier et recommencer le calcul à partir d'une autre configuration!


TsuneoHors ligneMembrePoints: 973 Défis: 51 Message
Posté le 07-11-2013 à 23:07 | #
Dommage pour le million, c'était bien essayé ! Par contre, moi aussi je pensais qu'il y avait max 9⁸¹ essais grand maximum quoi, ça parait super logique quoi... J'aimerais bien avoir une explication plus à ma portée de tout ça !
PurobazHors ligneMembre d'honneurPoints: 2690 Défis: 110 Message
Posté le 09-11-2013 à 20:48 | #
Pour Purobaz' si tu passes par là:

En réfléchissant à la complexité de mon algorithme de sudoku, avec un pote on s'est dit qu'il n'y avait que 9^81 possibilités maximum! Donc le nombre d'essais est borné!

Du coup j'ai dit à mon prof:
"- Monsieur j'ai fait un solveur de sudokus en O(1)!
- Ah c'est pas mal pour un problème NP-Complet..."


Pour la complexité je l'avais indiquée dans mon dernier message.
Je pense que c'est normal qu'il y ait un nombre d'essais limité puisqu'il y a un nombre fini de grille.

Je pense cependant qu'il est possible de transcrire en basic un tel algorithme, j'essayerais peut-être un jour.
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message
Posté le 10-11-2013 à 21:19 | #
Transcrire l'algorithme, oui, le faire marcher, euh...
A mon avis il ne terminera pas pour un bon nombre de grilles, étant donné qu'il met genre 2 minutes sur mon ordi en Caml, alors en Basic il faudra 1 an! Sans parler de la capacité de mémoire hallucinante que la calculette n'aura sûrement pas, ou alors il faudra ruser à mort, mais éventuellement ça se fait! (en utilisant toutes les listes!)

Au passage, oui moi aussi j'aimerais faire de la récursivité en Basic, mais j'aimerais m'atteler à un truc bien plus général,une sorte d'éditeur de programme récursif, (j'en ai déjà fait un assez rudimentaire), ou une sorte de compilateur, mais je promets rien!


Bien sûr la complexité c'est une blague! C'est exponentiel, il n'y a pas de miracle!

@Tsuneo: Pourquoi 9^81?
Regarde en binaire: avec n bits, tu as 2^n combinaisons possibles (11111=2^5).
En fait, 2^n est le nombre de 2-colorations d'un graphe à n sommets!

Donc en fait p^n est le nombre de p-colorations d'un graphe à n sommets!
("nombre de valeurs possibles" puissance "nombre de cases")


Ici on a en quelque sorte un graphe à 81 sommets (81 cases) et on considère des 9-colorations (9 "couleurs" possibles), donc 9^81 grilles possibles. Bien sûr la plupart sont incorrectes, je ne dis pas! Mais c'est bien une majoration du nombre de grilles à tester!
TsuneoHors ligneMembrePoints: 973 Défis: 51 Message
Posté le 10-11-2013 à 22:08 | #
Merci Alex, c'est plus clair maintenant !
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message
Posté le 01-12-2013 à 19:06 | #
Bon j'ai pensé à un truc en début d'aprèm', et du coup j'ai réussi à adapter mon programme Caml sur caltos!

Mais il est tellement lent que c'est plus rapide de le faire à la main! (mais au moins il est sûr de trouver!)

J'ai encore un truc à implémenter et quelques optis, et ça devrait devenir performant, EN THEORIE!

Theprog, est-ce que tu m'autorise à réutiliser les parties de ton code sur l'affichage et l'entrée de la grille?
(la flemme de tout refaire...)

Pages: Précédente | 1, 2, 3, 4, 5 | Suivante

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 260 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd