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 :

aide exo avec recursivité


Sujet :

Lisp

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 196
    Points : 61
    Points
    61
    Par défaut aide exo avec recursivité
    Voila j'ai un exo à faire
    je dois créer Une fonction qui filtre o dans une liste

    > (filtre-o '(o o o & o o o $ o o o))
    (o o o o o o o o o)


    Donc voila comment je m'y prend
    la liste est vide donc je dois retourner nil
    la liste commence par autre chose donc j'utilise la fonction consp
    qui teste si son argument est un cons si c'est ce le cas je regarde la suite de la la sous liste et je regarde si sa valeur est egale à o et je le rajoute à ma nouvelle liste
    Sinon si la liste commence par o je rajoute o à ma nouvelle liste
    (defun filtre-o (seau)
    (setq bassine nil)
    (cond
    ((not seau) (return bassine))
    ((consp (car seau)) (equal (cadr seau) 'o) (push (pop (cadr seau)) bassine))
    ((equal (car seau) 'o) (push (pop seau) bassine)) ) )
    Merci de me dire si je fais bien

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Je ne vois pas l'utilité de 'bassine' ni de consp
    filtre est une fonction à un argument L (ou seau, comme tu veux).
    Si L=( ) retourner NIL (terminaison de la récursivité)
    Si car L='0 retourner (cons '0 (filtre (cdr l))) appel récursif décroissant
    sinon retourner (filtre (cdr L)) idem
    Code lisp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (defun filtre (L)
      (if (null L) nil 
          ( if (eq (car L) 'o) (cons 'o (filtre (cdr l)))
    	   (filtre (cdr L)))))
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 196
    Points : 61
    Points
    61
    Par défaut
    Merci pour ta réponse
    ca marche que si la liste est simple c'est à dire (o o o o f f o )
    mais si la liste est compose de sous liste (o (f o ) (( o & ) o) g o)
    Ca marche pas

  4. #4
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Et dans ce cas tu veux récupérer quoi ?
    Ta fonction de filtrage doit elle conserver la structure ou aplatir ?
    La question n'est pas claire.
    Si tu veux conserver la structure:
    Code LISP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    (defun filtre (E)
      (cond ((null E) nil)
    	((and (atom (car E)) (eq (car E ) 'o)) (cons 'o (filtre (cdr E))))
            ((atom (car E)) (filtre (cdr E)))
            (T (cons (filtre (car E)) (filtre (cdr E)))))) 
     
    (filtre '(o (f o ) (( o & ) o) g o))
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 196
    Points : 61
    Points
    61
    Par défaut
    Désolé j'avais mal l'énoncé je ne dois le faire que sur des liste simple
    Merci pour ton aide en tous cas

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

Discussions similaires

  1. Aide requète avec jointure
    Par StanmaD dans le forum Requêtes
    Réponses: 2
    Dernier message: 04/11/2006, 23h55
  2. besoin aide bouton avec effet zoom fonctionne pas.
    Par zicomoun dans le forum Flash
    Réponses: 3
    Dernier message: 13/06/2006, 08h15
  3. Aide: Problème avec la taille de mon fichier
    Par ATTIA dans le forum Langage
    Réponses: 6
    Dernier message: 15/03/2006, 10h19
  4. de l'aide, problème avec lecteur CD/graveur
    Par princetn dans le forum Périphériques
    Réponses: 2
    Dernier message: 18/02/2006, 06h37
  5. besoin d'aide fonction avec fichier (debutant)
    Par boby61 dans le forum Débuter
    Réponses: 9
    Dernier message: 14/03/2005, 11h22

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