Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : juillet 2012
    Messages : 6
    Points : 3
    Points
    3

    Par défaut append sous-liste vers liste

    Bonjour à vous,*

    j'arrive pas à trouver ce qui manque sur cette fonction !!
    j'ai une liste (a b ( c (d) (e) (f))(g) nil) et je voulais mettre cette liste en une seule liste sans les sous-liste , (a b c d e f g nil)
    j'ai cette fonction :

    Code :
    1
    2
    3
    4
    5
    (defun seul (liste)
      (cond
        ((not liste) nil)
        ((listp (car liste)) (append (car liste) (seul (cdr liste))))
        (t (cons (car liste)(seul (cdr liste))))))
    Le problème, ce que quand il y a plusieurs listes imbriquées, la fonction ne s’occupe que d’un seul niveau
    (seul '(a b (c (d) (e) (f))(g) nil))
    (A B C (D) (E) (F) G) alors j'obtiens ça, au lieu de (A B C D E F G NIL)

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Inscrit en
    septembre 2003
    Messages
    4 560
    Détails du profil
    Informations forums :
    Inscription : septembre 2003
    Messages : 4 560
    Points : 5 488
    Points
    5 488

    Par défaut

    Ce n'est pas testé mais je ferais ceci :
    Code :
    1
    2
    3
    4
    5
    6
    7
    (defun seul (liste)
      (cond
        ((not liste) nil)
    
        ((listp (car liste)) (append        (seul (car liste))               (seul (cdr liste))))
    
        (t (cons (car liste)(seul (cdr liste))))))
    "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 : Intérieur avec jeune femme de Vilhelm Hammershoi

  3. #3
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : juillet 2012
    Messages : 6
    Points : 3
    Points
    3

    Par défaut

    Oui tout simplement il teste le chaque car de liste , meme les liste impbriqué
    j'ai testé et ça marche a part qu'il prend pas le NIL de la fin !!
    Code :
    1
    2
    3
    4
    5
    6
    7
    (defun seul (liste)
      (cond
        ((not liste) nil)
    
        ((listp (car liste)) (append (seul (car liste))(seul (cdr liste))))
    
        (t (cons (car liste)(seul (cdr liste))))))
    (seul '(a b (c (d) (e) (f))(g) nil))

    (a b c d e f g ) sans le NIL

  4. #4
    Expert Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 103
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 103
    Points : 5 986
    Points
    5 986

    Par défaut

    NIL c'est une liste vide...
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •