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.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Résolveur de Sudoku
Ben63 Hors ligne Membre Points: 8 Défis: 0 Message

Résolveur de Sudoku

Posté le 10/03/2013 12:23

Bonjour à tous,

Je me suis lancé dans un projet de programmation.
J'ai créé un programme de résolveur de sudoku 9x9.

Programme SUDOKU9 en piece jointe

Ce programme arrive à résoudre les sudoku facile, moyen, difficile et diabolique, voir même certains démoniaques.
Il met environ 2 minutes pour un sudoku facile sur ma Graph 60.

Il faut préalablement créer la matrice A en 9x9 avec les valeurs de départ avant d'éxécuter le programme SUDOKU9.

N'ayant pas de câble, j'ai recopié le programme à la main dans FX-Interface,

Si quelqu'un pouvait tester le programme et me dire s'il fonctionne chez vous?
Est-ce qu'il n'y a pas des fautes de frappe?

Dans un second temps, je serais ravi que certains
me proposent des améliorations pour optimiser le programme.

Merci d'avance.

Cordialement

Ben63

Fichier joint


Totoyo Hors ligne Membre d'honneur Points: 16093 Défis: 102 Message

Citer : Posté le 10/03/2013 12:49 | #


Le code m'a l'air propre, voici quelques astuces d'optimisation de la mémoire (à vérifier si elles marchent sur Graph 60):
Sum (Int (10Frac (10^S*Mat->List(B,A)))*List Ans)->Z

If Int (10Frac (10^S*Mat B[W+Q,V+P]))

Mat Ans[T,A]=>Mat B[T,A]-R->Mat B[T,A]

Tu peux supprimer le signe de la multiplication avant le List et ainsi que les parenthèses, crochets et accolades à la fin de la ligne ou avant -> et =>

Sum (Int List Ans (10Frac (10^S*Mat->List(B,A->Z [green]//j'ai déplacé List Ans en début de ligne pour pouvoir supprimer 3 parenthèses en plus[/green]

If Int (10Frac (10^S*Mat B[W+Q,V+P

Mat Ans[T,A=>Mat B[T,A]-R->Mat B[T,A

En ce qui concerne tes algorithmes de résolution, je ne peux pas t'aider car mon niveau en mathématique/algorithmique n'est pas mon point fort.
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 10/03/2013 13:10 | #


evite de faire ce genre d'optimisation (enlever les ] ou les )) si tu veux que ton programme marche sur toutes les graph. l'exemple le plus flagrant est harry potter 85 qui ne marche pas sur les 85 OS 2.0...
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Totoyo Hors ligne Membre d'honneur Points: 16093 Défis: 102 Message

Citer : Posté le 10/03/2013 13:25 | #


Il faut simplement éviter de supprimer les parenthèses avant les virgules. Par exemple
Mat [(A+B),C [green]//je laisse la parenthèse fermée avant la virgule, mais je peux supprimer le crochet à la fin[/green]

PxlOn (A+B),(C+D [green]//idem[/green]

Pour les astuces que j'ai donné, je m'en sers aussi sur ma Graph 85 SD OS 2.x et je n'ai jamais eu de problème.
Ben63 Hors ligne Membre Points: 8 Défis: 0 Message

Citer : Posté le 10/03/2013 21:12 | #


Merci pour les astuces,
je viens de tester.
Effectivement cela fonctionne.
Je trouve pas cela très carré, mais cela gagne des octets.

Sinon, quelqu'un a testé le programme, il fonctionne correctement?
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 10/03/2013 21:32 | #


Le problème pour tester c'est que la plupart d'entre nous ne peuvent plus utiliser ce format car nous utilisons FA-124 pour transférer et qu'il ne supporte pas les FXI.

J'ai essayé de le convertir, pour FA-124, mais je suis tombé sur pas mal d'erreurs (rien que le ViewWindow tu as écris ViewVWindow par exemple)

Ce que je peux te conseiller c'est de télécharger la version convertie (en pièce jointe), et de l'ouvrir avec FA-124 pour modifier, et pour tester télécharge l'émulateur. Et ouvre ton fichier avec. Si tu arrives à le faire fonctionner dessus, alors il fonctionnera pour nous.

En tout cas merci de prendre le temps de le partager

PS : pour ouvrir ton fichier avec l’émulateur, va dans Memory, et importe depuis la carte SD (la carte SD correspond à ton ordinateur)
Ben63 Hors ligne Membre Points: 8 Défis: 0 Message

Citer : Posté le 10/03/2013 22:22 | #


Ok Merci beaucoup.

Je vais utiliser FA-124 pour que tout le monde puisse le tester.

Merci pour le "ViewWindow".

Je regarde cela, et mets une nouvelle version en ligne.

Cordialement
Ben63 Hors ligne Membre Points: 8 Défis: 0 Message

Citer : Posté le 11/03/2013 22:27 | # | Fichier joint


Salut à tous,

Ca y est, j'ai tapé le programme sur FA-124.
Effectivement, il y avait plein de petites erreurs,
(un O au lieu de 0 etc...)
Heureusement qu'il y a l'émulateur.

Pour l'émulateur, je suis embêté
Il met seulement 2 secondes, au lieu de 2 minutes pour compléter le Sudoku 8)

Par contre, j'avais fait un programme en couleur mais j'ai dû l'enlever.

Voilà, j'espère que vous pourrez me dire ce que vous en pensez.

Programme en pièce jointe

Salutations

Ben63
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 11/03/2013 23:10 | #


La diabolique-1 ne se résout pas Trop diabolique !
C'est quand même sympas de voir le sudoku se résoudre sous ses yeux.

Si tu veux une idée d'amélioration, je te propose de faire un editeur pour rentrer le sudoku, parce que la matrice, c'est pas hyper pratique.
Ben63 Hors ligne Membre Points: 8 Défis: 0 Message

Citer : Posté le 12/03/2013 13:03 | #


Effectivement, ta grille de diabolique ne se résout pas, elle est particulièrement difficile.

Pour la saisie, j'avais 2 idées:
soit une saisie dans l'interface graphique, avec un curseur.
soit une saisie dans l'interface texte, où la personne tape chaque ligne, et les cases vides, il met un 0.
exemple? 010234009

Quelle est la meilleure idée?
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 12/03/2013 13:11 | #


je pense que la deuxième est plus pratique et rapide, mais la première est plus classe et professionnelle. je pense que le meilleur serait de donner le choix a l'utilisateur
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 12/03/2013 13:15 | #


Pour moi la première, c'est pas non plus hyper lent de faire un getkey et de rempalcer juste un nombre dans le sudoku.
Ben63 Hors ligne Membre Points: 8 Défis: 0 Message

Citer : Posté le 13/03/2013 21:53 | #


Bonjour à tous,

J'ai modifié pour le programme pour avoir une saisie avant la partie résolution.
Je vous laisse découvrir la nouvelle version.
PS: N'hésitez pas à utiliser la touche 0.

Quand j'aurai un peu de temps, je me pencherai sur la résolution de sudoku très très dur.
Scratchy Hors ligne Membre Points: 18 Défis: 0 Message

Citer : Posté le 18/02/2020 19:45 | #


Super pratique comme programme et plutôt rapide je m'en servirais pour résoudre tous mes sudokus

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 94 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