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

  1. #1
    Membre à l'essai
    Scheme- Supprimer tout les éléments à partir 2eme élément liste
    Bonjour tout le monde

    J'aurais besoin d'aide s'il vous plait, j'essai de faire une procédure récursive en scheme qui supprime tout les éléments d'une liste à partir du deuxième élément.
    Si la liste est vide ou inférieure à 1 alors je retourne une liste vide. Voici un exemple du résultat que j'essai d'avoir
    (enleve '(1 2 3 4))
    resultat: (1)

    (enleve '(1))
    resultat ()

    voici mon code il remplit bien la deuxième condition mais m'envoi balader pour la premiere...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (define (enleve elem)
      (if(< (length elem) 1)
        '()
        (enleve (cadr elem)
                     (cons (car elem) (enleve (cdr elem))))))
    Merci d'avance pour votre aide

  2. #2
    Rédacteur/Modérateur

    On peut quand même faire plus simple (mais ce n'est pas récursif) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (define (enleve elem)
      (if (eq? elem '())
        elem
        (list (car elem))))
    "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 à l'essai
    Merci pour votre réponse, oui je connaissais cette méthode mais c'est un exercice qui m'a été donné pour comprendre le langage et nécessite le récursif, une idée s'il vous plait?

  4. #4
    Rédacteur/Modérateur

    Il faut s'amuser avec cond, null?, car, cdr et cddr !
    Bon courage
    "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