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 :

prédicat liste sans doublons


Sujet :

Prolog

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2005
    Messages : 311
    Points : 97
    Points
    97
    Par défaut prédicat liste sans doublons
    Salut tout le monde

    j'ai besoin d'un prédicat qui peut prendre une liste des listes composées
    de 3 informations sur mes livres (matière, nombre , et langue )
    et me retourne une nouvelle liste sans doubons, avec le total des nombres du livre concerné
    et changer toutes les langues en 'fr' comme celà:


    sansDoublons([[Science, 2, fr], [Math, 2, ang], [Philosophie, 4, ang], [Science, 5, fr], [Science, 1, ang]], R)

    Résultat:

    R= [[Science, 8, fr], [Math, 2, fr], [Philosophie, 4, fr]]


    j'ai fait des essais mais je me suis bloquée


    Merci

  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
    Bonjour

    Attention, les noms de variables en Prolog commencent par une majuscule, donc il faut des initiales minuscules pour Math, Philo et Sciences sinon ça ne fonctionne pas !

    Voici une possibilité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    % une liste vide, n'a pas de doublons
    sansDoublons([], []).
     
    % dans le cas général
    % d'abord la langue en entrée n'a aucune importance (d'où le _ pour le troisième argument
    sansDoublons([[Theme, N, _] | T], SD) :-
    	% on traite la suite de la liste
    	sansDoublons(T, SD1),
    	% on traite l'élément courant
    	(   select([Theme, N1, fr], SD1, SD2)
    	->  N2 is N1+N,
    	    SD = [[Theme, N2, fr] | SD2]
    	;   SD = [[Theme, N, fr] | SD1]).
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2005
    Messages : 311
    Points : 97
    Points
    97
    Par défaut
    Merci beaucoup Trap D,
    ça m'a aidé beaucoup à comprendre

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

Discussions similaires

  1. Automatisation liste sans doublon
    Par mathel dans le forum Excel
    Réponses: 2
    Dernier message: 03/01/2008, 13h28
  2. Liste sans doublon
    Par marc56 dans le forum Excel
    Réponses: 5
    Dernier message: 19/12/2007, 19h22
  3. liste sans doublons
    Par doons dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 08/10/2007, 13h47
  4. [SQL] Liste sans doublons
    Par tchin dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 19/09/2007, 13h43
  5. [VBA-E] Liste sans doublons pour remplir cellule
    Par Currahee dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/06/2007, 11h45

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