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

Lisp Discussion :

construire des listes


Sujet :

Lisp

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut construire des listes
    Bonsoir

    c'est urgent svp

    soit une liste de cours et d'ensignants :

    (setq cours '(cours cours cours.......cours))
    (setq ensignants '(ensignants ensignants ......ensignants))

    produisez une liste qui associe chaque cours à un enseignant :

    ==> ((cours ensignants) (cours ensignants) ...)

    on suppose que les ensignants et les cours sont classés de matière à se correspondre un par un (il peut y avoir plusieurs fois le même ensignants)

    j'ai tenté ce code mais il me renvois . au milieu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    (defun associe(liste1 liste2 )
    (cond
    	((atom liste1) nil)
    	((cons (cons (car liste1) (car liste2)) (associe (cdr liste1) (cdr liste2))))))
    [61]> (associe '(phylo algebre math python archi) '(mathieu pauline pauline jym feat))
    ((phylo . mathieu) (algebre . pauline) (math . pauline) (python . jym) (archi . feat))

    2) question que je n'arrive pas a résoudre :

    à partir des memes liste, produire la liste des cours donnés par chaque ensignants :

    ==>(ensignants cours cours) (ensignants cours...)....)

    écrire une fonction qui à partir de cette liste donne la liste des cours d'un ensignants donné
    (cours 'x) = ramène la liste des cours donnés par l'ensignant x

    merci de m'aider je me prépare a passer un teste (c'est une révision)

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Billets dans le blog
    21
    Par défaut
    Au sujet du point entre les membres de la liste, compare:
    - (cons 'a 'b) ==> (a . b)
    - (cons 'a '(b)) ==> (a b)

    Une liste est formée en appliquant cons à un élément et une liste:
    (cons a nil) ==> (a) // nil est la liste vide
    (cons a (cons b nil) ==> // (a b)

    Le deuxième point est un peu plus compliqué. La démarche la plus simple est:
    - transformer la liste d'enseignants donnée au début en l'ensemble des enseignants (c'est-à-dire supprimer les doublons)
    - pour chacun des membres de cet ensemble, rechercher dans la liste produite par la fonction "associer" les membres qui contiennent le nom de l'enseignant et agréger le nom du cours.

    Si tu rencontres des difficultés, poste ce que tu as fait et tu auras de nouveaux conseils

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 33
    Par défaut
    Citation Envoyé par l1informatique Voir le message
    Bonsoir
    on suppose que les ensignants et les cours sont classés de matière à se correspondre un par un (il peut y avoir plusieurs fois le même ensignants)
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (mapcar 'cons '("c1" "c2" "c3" "c4" "c5" "c6") '("e1" "e2" "e2" "e4" "e3" "e5"))
    Résultat : (("c1" . "e1") ("c2" . "e2") ("c3" . "e2") ("c4" . "e4") ("c5" . "e3") ("c6" . "e5"))

    @+

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par l1informatique Voir le message
    produisez une liste qui associe chaque cours à un enseignant :

    ...

    j'ai tenté ce code mais il me renvois . au milieu
    Si on te demande une "liste qui associe", alors il vaut mieux retourner une "liste d'associations", c'est-à-dire, en l'occurrence, une liste avec des points.
    Donc ce que tu as fait est bon!

    Sinon, peut-être en ajoutant un sed -e 's| [.] | |g' ça enlèvera les points superfétatoires...

  5. #5
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut
    Je vous remercie pour les réponses j'ai résolu

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

Discussions similaires

  1. Construire la liste des valeurs d'une combo
    Par MadMax4 dans le forum Ext JS / Sencha
    Réponses: 5
    Dernier message: 04/12/2010, 14h26
  2. Réponses: 10
    Dernier message: 10/05/2010, 21h59
  3. [ADO] Construire la liste des providers OLE BD installés
    Par edechaux dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/11/2005, 09h28
  4. Réponses: 2
    Dernier message: 04/08/2005, 12h26
  5. Réponses: 3
    Dernier message: 14/02/2004, 10h10

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