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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
swif
Niveau 2
Niveau 2
Messages : 20
Enregistré le : ven. 07 nov. 2008 13:42
Status : Hors ligne

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

#1

Message 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é 68 fois
Modifié en dernier par swif le jeu. 18 déc. 2008 09:29, modifié 5 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#2

Message 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
 
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
swif
Niveau 2
Niveau 2
Messages : 20
Enregistré le : ven. 07 nov. 2008 13:42
Status : Hors ligne

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

#3

Message 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
swif
Niveau 2
Niveau 2
Messages : 20
Enregistré le : ven. 07 nov. 2008 13:42
Status : Hors ligne

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

#4

Message 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!
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#5

Message 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:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
swif
Niveau 2
Niveau 2
Messages : 20
Enregistré le : ven. 07 nov. 2008 13:42
Status : Hors ligne

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

#6

Message 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).
Répondre