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 :

Erreur de logique introuvée


Sujet :

Prolog

  1. #1
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut Erreur de logique introuvée
    Salut,

    Je suis sous GNU Prolog...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    % on calcule les differences de X avec tous les elements de L
    calc_all_differences(_,[],[]).
    calc_all_differences(X,[H|Q],L) :-
    	N is X-H,
    	calc_all_differences(X,Q,[N|L]).

    j'ai cerné le problème...
    en gros, quand je demande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     calc_all_differences(3,[1,0],L).
    il me dit yes, sans me donner la valeur de L ([1,2])
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Ca ira mieux si tu fais comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    calc_all_differences(_,[],[]).
    calc_all_differences(X,[H|Q],[N|Q1]) :-
      N is X-H,
      calc_all_differences(X,Q,Q1).
    Exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ?- calc_all_differences(3,[1,0],L).
     
    L = [2, 3]
    Je ne comprends pas pourquoi tu cherches à obtenir [1,2] comme résultat.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par pcaboche
    Ca ira mieux si tu fais comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    calc_all_differences(_,[],[]).
    calc_all_differences(X,[H|Q],[N|Q1]) :-
      N is X-H,
      calc_all_differences(X,Q,Q1).
    Exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ?- calc_all_differences(3,[1,0],L).
     
    L = [2, 3]
    parfait...
    ça se voit que cela fait un moment que je n'ai touché au prolog... avec de telle erreur

    Citation Envoyé par pcaboche
    Je ne comprends pas pourquoi tu cherches à obtenir [1,2] comme résultat.
    il devait être tard...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Sinon, il y a encore une autre façon de faire (en swi-prolog) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    minus(A,B,C) :-
      C is A-B.
     
    calc_all_differences(X, L1, L2) :-
      maplist(minus(X), L1, L2).
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  5. #5
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Merci beaucoup... mais je suis "obligé" de bosser sous GNU-Prolog
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  6. #6
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par gorgonite
    Merci beaucoup... mais je suis "obligé" de bosser sous GNU-Prolog
    Quand je donne une solution alternative pour swi-prolog, c'est à titre d'information pour un éventuel visiteur qui passerait par là (suite, par exemple, à une recherche sur internet).

    Je ne sais pas ce qui est implémenté sous GNU-Prolog.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur de syntaxe introuvable
    Par salseropom dans le forum C
    Réponses: 8
    Dernier message: 01/03/2007, 16h00
  2. erreur de logique
    Par 1debutante dans le forum C
    Réponses: 6
    Dernier message: 17/01/2007, 00h06
  3. Erreur execution dll introuvable
    Par hegros dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 22/12/2006, 09h40
  4. [Erreur] E1026 Fichier introuvable : 'xxx.dfm'
    Par richard038 dans le forum Langage
    Réponses: 4
    Dernier message: 18/01/2006, 14h47
  5. [C#] Erreur User.IsInRole introuvable
    Par mahboub dans le forum ASP.NET
    Réponses: 2
    Dernier message: 08/12/2005, 21h53

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