Précédent   Forum du club des développeurs et IT Pro > Autres langages > Langages fonctionnels > Lisp
Lisp Forum d'entraide sur la programmation en langages fonctionnels Lisp et Common Lisp
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/08/2012, 22h53   #1
Leon00
Invité de passage
 
Homme
Étudiant
Inscription : juillet 2012
Messages : 5
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 : 5
Points : 4
Points : 4
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)
Leon00 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2012, 16h14   #2
Trap D
Rédacteur/Modérateur
 
Avatar de Trap D
 
Inscription : septembre 2003
Messages : 4 437
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 4 437
Points : 5 301
Points : 5 301
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
Trap D est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2012, 21h04   #3
Leon00
Invité de passage
 
Homme
Étudiant
Inscription : juillet 2012
Messages : 5
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 : 5
Points : 4
Points : 4
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
Leon00 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2012, 17h34   #4
Jean-Marc.Bourguet
Expert Confirmé Sénior

 
Inscription : novembre 2005
Messages : 4 970
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 4 970
Points : 5 607
Points : 5 607
NIL c'est une liste vide...
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
Jean-Marc.Bourguet est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h14.


 
 
 
 
Partenaires

Hébergement Web