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 :

[Débutant] Doubler les éléments d'une liste


Sujet :

Prolog

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut [Débutant] Doubler les éléments d'une liste
    Hello,

    Toujours en phase d'apprentissage, je souhaitais à titre d'excercie doubler les élements d'une liste.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dbl([],_).
    dbl([H|L1],[H2|L2]) :- dbl(L1,[H2|_]) , H2 is H*2.
    mais je me retrouve avec une liste L2 qui à un terme non défini à la fin.

    Comment faire pour ne pas avoir ce terme ?

    Merci

  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
    Tu peux faire comme ça, mais ça va pas aider:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    double(L, L2) :-
      maplist(plus, L, L, L2).
    La réponse que tu attends, c'est ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    double([],[]) :- !.
    double([X|Q],[X2|Q2]) :- 
      X2 is X*2,
      double(Q, Q2).
    "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
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    %doubler une fois sur deux les éléments d'une liste
    double([],[]) :- !.
    double([X|Q],[X2|Q2],1,N) :- double(Q, Q2, N,N).
    double([X|Q],[X2|Q2],K,N) :- K>1, K1 is K -1 , X2 is X*2, double(Q, Q2, K1,N).
    et là pourquoi ça ne fonctionne pas ?

  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
    Citation Envoyé par guillaume07
    et là pourquoi ça ne fontionne pas ?
    Fait un
    et essaye de comprendre tes erreurs !



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    double_1sur2([X,Y|L1],[X,Y2|L2]) :- 
      !,
      Y2 is Y*2,
      double_1sur2(L1,L2).
     
     double_1sur2([X],[X]) :- !.
    double_1sur2([],[]) :- !.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    double_1surN(N, L, R) :-
      double_1surN(N, N, L, R).
     
    double_1surN(_, _, [], []) :- !.
    double_1surN(1, N, [X|L1], [X2|L2]) :-
      !,
      X2 is X*2,
      double_1surN(N, N, L1, L2).
     
    double_1surN(I, N, [X|L1], [X|L2]) :-
      !,
      NI is I-1,
      double_1surN(NI, N, 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
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut
    merci je vais méditer tout ça , et penserai au trace à l'avenir

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/05/2007, 21h51
  2. [MySQL] Afficher toutes les données d'un champ dans une liste déroulante
    Par Touareg dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 19/03/2007, 12h42
  3. Réponses: 2
    Dernier message: 05/02/2007, 10h19
  4. isoler les 2 plus grandes valeurs d'une liste
    Par marlene.ln dans le forum Access
    Réponses: 3
    Dernier message: 29/01/2007, 10h22
  5. [MySQL] Organiser les valeurs de 2 tables dans une liste de sélection
    Par domdas dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/08/2006, 08h51

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