IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Prolog Discussion :

Boucle infinie lors d'un parcours d'une liste


Sujet :

Prolog

  1. #1
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut Boucle infinie lors d'un parcours d'une liste
    Bonsoir, j'ai écrit un prédicat qui parcourt une liste pour vérifier s'il y a des doublons.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    valid([]).
    valid([X|L]):- not member([X,L]), valid(L).
    si je passe directement une liste saisie à la main, du style :
    ça marche parfaitement, mais lorsque j'appelle ce prédicat depuis un autre prédicat et que valid renvoie faux (donc qu'il y a un doublon), j'ai une boucle infinie. Par contre, si valid renvoie vrai, il n'y a pas de boucle infinie. Le problème se produit donc quand valid renvoie faux.

    Sauriez-vous pourquoi ?

    Merci d'avance pour vos réponses : )

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    valid renvoyant faux, celà provoque backtrack, c'est pour celà que tu as une boucle infinie. Il faut traiter le cas sous cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    predicat :-
       .....
       (valid(X) -> <action lorsque valid réussit> ; <action lorsque valid echoue>),
       ....
    Le princpie est là mais ce serait bien que tu montres ton code pour juger exactement.

  3. #3
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    Merci beaucoup, ca marche parfaitement bien, je n'ai plus de boucle infinie.

    En revanche comme le programme se termine après l'appel de ce prédicat, j'aimerais que "<action lorsque valid réussit>" soit une sorte d'instruction vide.
    Que puis-je mettre dans cette action?

    Merci encore!

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Tu peux mettre true.

Discussions similaires

  1. Réponses: 9
    Dernier message: 05/06/2015, 16h48
  2. Boucle infinie lors de l'exécution de SmsLib
    Par maevien dans le forum Java ME
    Réponses: 0
    Dernier message: 22/08/2013, 15h12
  3. Sortir d'une boucle infinie lors d'un «shutdown aimable»
    Par spoutniksurf dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 10/12/2010, 15h15
  4. Réponses: 9
    Dernier message: 05/06/2009, 09h26
  5. boucle infinie lors du test de la taille d'un champ
    Par paolo2002 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 10/04/2008, 09h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo