Page 1 sur 1

[R] Bug que je ne comprends pas...

Posté : lun. 15 déc. 2008 19:19
par swif
Voilà avant d'appliquer le code souflé tlem précédement dans le topic " Trouver L'intrus en comparant plusieurs fichiers "
Je viens de me rendre compte d'un bug durant la première étape de la résolution:
La première étape attribue tout simplement le nombre à une case quand celui-ci est le seul possible.
Premier clique sur résoudre pas de soucis ainsi qu'au deuxième (c'est juste des tests avant d'appliquer les autres algo) mais quand je clique une troisième fois le programme n'arrive plus à lire certains fichiers qui ne lui posé aucun problème lors des cliques précédents.
J'aimerais juste comprendre à quoi c'est dûs !!!
Si quelqu'un as le courage de jeter un oeil au code merci d'avance!!!
testsudoku.au3
(49.95 Kio) Téléchargé 76 fois

Re: [..] Bug que je ne comprends pas...

Posté : lun. 15 déc. 2008 21:33
par Tlem
Scite4AutoIt me donne 19 erreurs dans le code.
Toutes liées à

Code : Tout sélectionner

if $LireCaseBloc not = 0 then
qui devrait être

Code : Tout sélectionner

if not $LireCaseBloc = 0 then
Une fois les erreurs corrigées, je me retrouve devant un Sudoku vide dans lequel je peut rentrer des valeurs ...
Mais si je clique sur résoudre, rien ne se passe !!!

En regardant un peut ce code fort indigeste :wink: je remarque une utilisation abusive de la commande While/Wend.
En effet, les lignes de ce type :

Code : Tout sélectionner

While 1
    if StringInStr($ReadCheckHorizontal, "1") Then
    FileWriteLine($NombresPossibleHorizontal, "")
    ExitLoop
    else
    FileWriteLine($NombresPossibleHorizontal, "1")
    ExitLoop
    Endif
Wend
pourrait être simplifiées en ceci :

Code : Tout sélectionner

if StringInStr($ReadCheckHorizontal, "1") Then
   FileWriteLine($NombresPossibleHorizontal, "")
else
   FileWriteLine($NombresPossibleHorizontal, "1")
Endif
On pourrait aussi envisager pour cette partie de code (et pour certaines autres parties) une simplification des 80 lignes de code comme ci-dessus en ceci :

Code : Tout sélectionner

Func _RCH()
    For $i = 1 to 9
        if StringInStr($ReadCheckHorizontal, $i) Then
            FileWriteLine($NombresPossibleHorizontal, "")
        else
            FileWriteLine($NombresPossibleHorizontal, $i)
        Endif
    Next
EndFunc
 

Re: [..] Bug que je ne comprends pas...

Posté : mar. 16 déc. 2008 17:26
par swif
Bonjour,
Tout d'abord un grand merci d'avoir pris un peu de temps pour décrypter un peu ce script!!!
Scite4AutoIt me donne 19 erreurs dans le code
Bon fallait bien que je l'installe un jour...
Une fois les erreurs corrigées, je me retrouve devant un Sudoku vide dans lequel je peux rentrer des valeurs ...
Mais si je clique sur résoudre, rien ne se passe !!!
Bon là je penses que vous me faites payer mon manque clarté :? en faisant semblant de ne pas comprendre car c'est un resolveur de sudoku donc avant d'appuyer sur résoudre il faut auparavant lui donner une grille à résoudre.
En regardant un peut ce code fort indigeste :wink:

Je tiens à vous préparez pour les repas de fêtes :)
je remarque une utilisation abusive de la commande While/Wend
Oui vraiment !!! Je débute c'est vrai mais j'aurai vraiment pus y faire plus attention!
On pourrait aussi envisager pour cette partie de code (et pour certaines autres parties) une simplification des 80 lignes de code
Oui merci superbe idée il va vraiment falloir que je prenne l'habitude de créer des fonctions

Sinon pour en revenir au sujet du post avez vous essayer donc en lui donnant une grille à résoudre de cliquer plus de deux fois sur résoudre (là pour le moment il n'attribut de solution qu'en cas d'un seul nombre possible) et si oui seriez vous pourquoi la troisième fois il ne peut lire les fichiers qui sont recréés plus haut dans le code. Je me trompe sûrement mais ça m'as l'air important de bien comprendre ce point pour mes futurs plats :D

Re: [..] Bug que je ne comprends pas...

Posté : mer. 17 déc. 2008 15:01
par swif
Bon j'ai appliquer les conseils de tlem et ce "bug" as disparut !

Un code de beu bourré d'erreurs ça ne marche pas!

Merci du coup de main!

Re: [R] Bug que je ne comprends pas...

Posté : mer. 17 déc. 2008 22:53
par Tlem
La prochaine étape, pourrait être l'utilisation de tableaux au lieu de 81 dossiers et 486 fichiers qui représente tout de même 1,8 Mo. :shock:

Re: [R] Bug que je ne comprends pas...

Posté : jeu. 18 déc. 2008 09:32
par swif
Je pense aussi mais je vais plutôt le faire sur la finalisation, les fichiers textes étant bien pratique pour repérer les erreurs (je veux dire ils sont là en 0 et en 1 :D pas besoin de les appeller dans une msgbox).