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 : 8622
Score au progrank : 36
Pas encore de note !
Vous devez être connecté(e) pour noter (inscription).
1264 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 23-10-2013 à 21:25 | #
Euh juste, tu pourras corriger la faute monumentale qu'il y a sur ton .gif (et donc dans le programme)...?
(je résous)

Merci!


Si ça t'intéresse, j'ai ça aussi!
ça a été programmé par mon prof de maths de sup, c'est très performant en Java, mais en Basic je promets rien!
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message
Posté le 31-10-2013 à 17:35 | #
C est exactement ce que fais mon programme
Si t es son élève ... Bonne chance
Et pour la faute ... j ai tres longuement hésité sur l orthographe mais je vais faire une maj des que possible
PurobazHors ligneMembre d'honneurPoints: 2690 Défis: 110 Message
Posté le 02-11-2013 à 09:45 | #
Votre méthode de résolution utilise les probabilités.

Il existe des algorithmes récursifs pour résoudre les sudoku de manière exacte et quelque soit la difficulté pourvu qu'il ait une solution. Voici un sujet que j'ai fait l'année dernière sur ce sujet et le corrigé Maple.
La difficulté est alors de "remplacer la récurrence" par une liste.
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message
Posté le 02-11-2013 à 10:23 | #
En fait il y a deux algos de résolution.
Le premier ( si je me trompe pas ) correspond au sujet (c'est a dire: si le chiffre qu'on cherche a mettre dans la case n'est ni dans la colonne, ni dans la ligne, et ni dans la zone de la case courante, alors c'est qu'il est bien ici ).
Le deuxième, appelé si le premier flanche car plus long et plus complexe utilise les probabilités (par exemple si le premier bloque car il y a 2 cases possibles pour un chiffre dans la zone).

Apres je n'ai peut être pas tout a fait compris ce que vous vouliez dire dans votre précédant post car je ne suis pas en MPSI mais en première et je n'ai donc pas encore vu les "récurrences".

PS: Je sais très bien qu'il existe des algo tout fait sur Internet mais mon but est d'en faire un potable tout seul a partir de techniques de resolution
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message
Posté le 02-11-2013 à 11:26 | #
Ah c'est sympa ce sujet Puro, merci!
(d'ailleurs nous on a fait un TD entier sur le coloriage de graphe si ça t'intéresse...).
Edit: le coloriage optimal d'un graphe!


Oui remplacer les appels récursifs c'est toute la difficulté, même si là ça devrait être possible, puisqu'on a un nombre d'arguments constant.

Mais au fait, c'est quoi la complexité de ton algorithme récursif?!
Elle doit être énorme non?

Tient j'ai bien envie de le tenter, d'autant que je kiffe la récursivité!
PurobazHors ligneMembre d'honneurPoints: 2690 Défis: 110 Message
Posté le 02-11-2013 à 23:25 | #
Pour la complexité je ne sais pas trop, à vue de nez je dirais qu'il y a maximum 9^81 opérations. En réalité on peut déjà en supprimer énormément avec les chiffres déjà placés.
Maple mettait 1 à 2 min pour résoudre une grille donc ça donne un ordre de grandeur acceptable pour la complexité.

Theprog a écrit :
je n'ai donc pas encore vu les "récurrences"

C'est normal que tu ne comprennes pas tout, en basic il est impossible de faire des algorithmes récursifs.

Un exemple simple pour comprendre la récursivité consiste à regarder l'algorithme d'un pot de peinture. Voici le code qu'on pourrait utiliser en C :
function potdepeinture(x, y, ancienne_couleur, nouvelle_couleur)
{
if(pixel(x, y) == ancienne_couleur) {
pixel(x, y) = nouvelle_couleur
potdepeinture(x-1, y)
potdepeinture(x+1, y)
potdepeinture(x, y-1)
potdepeinture(x, y+1)
}
}

Il faut bien avoir en tête que les variables x et y sont locales à la fonction, c'est à dire que si la fonction est ouverte plusieurs fois simultanément, x et y auront des valeurs dépendantes de la fonction considérée.

Essaye de suivre avec une feuille et un stylo le fonctionnement de cet algo. Tu comprend alors toute la difficulté de transcrire un tel algorithme en basic

C'est le même principe dans le cas du Sudoku mais la fonction est déjà plus complexe.

Theprog a écrit :
PS: Je sais très bien qu'il existe des algo tout fait sur Internet mais mon but est d'en faire un potable tout seul a partir de techniques de resolution

Pour cette même raison, il n'existe pas de tel algo en basic, qui n'accepte pas la récursivité, d'où l'enjeu.
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message
Posté le 04-11-2013 à 20:48 | #
C'est bon je viens d'enfin faire marcher ma fonction de résolution récursive en Caml!

J'ai galéré je vous dis pas! J'avais pas capté un truc (stupide)...

Enfin maintenant ça marche!
Mais je confirme, c'est impossible en Basic!!!
Déjà que Caml mets genre une minute pour résoudre des grilles difficiles, et à supposer qu'on arrive à faire marcher un algo récursif en Basic, et qu'on ait assez d'espace mémoire (en rusant), je n'ose pas imaginer le temps de calcul...

Mais bon, elle est quand même très élégante!

Donc bref, Theprog: ne change rien!
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message
Posté le 04-11-2013 à 21:08 | #
Je m'y attendais un peu a vrai dire
Parce que le récursif demande a ce que j'ai compris beaucoup de variables pour stoker les valeurs x,y,nombre ... et les Matrices ne suffisent pas
J'ai compris le principe du pot de peinture. Merci Purobaz
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message
Posté le 04-11-2013 à 22:08 | #
Une question Theprog: pourquoi dis-tu que ton algorithme ne résout que les grilles faciles et moyennes?
Les difficiles il abandonne avant?
Le programme de mon prof marche à tous les coups, et est basé sur un principe probabiliste comme le tien, du coup y a-t-il une différence entre les deux algorithmes?

Qu'est-ce qui empêche ton algorithme de terminer?
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message
Posté le 06-11-2013 à 13:36 | # | Fichier joint
C'est par exemple un truc tout simple:
La grille difficile, tu vas forcement arriver a un moment où tu vas avoir dans un meme carré, 2 cases possibles pour 2 chiffres. L'algo ne peut pas décider quelle case choisir (exemple de grille joint).
Donc l'algo bloque tout simplement car il ne peut pas trancher sur quelle case est la bonne. Pour ça soit tu fait au hasard (comme tu fais je crois ) soit il faut faire des méthodes plus complexes (mais tu verras par toi meme parce que c'est chaud a expliquer )

PS ça se passe dans la zone bas-droite

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 63 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