Scheme: comment supprimer doublons dans une liste - Langages fonctionnels - Programmation
Marsh Posté le 10-06-2013 à 12:23:45
Me semble normal, tu vérifies uniquement la duplication par rapport au prochain élément (2e clause). Il faut garder une liste de tous les éléments uniques vus et tester chaque élément de l'entrée contre cet accumulateur.
Marsh Posté le 08-05-2013 à 14:41:06
Bonjour,
Je souhaite créer une fonction qui supprime les doublons dans une liste.
par ex: (doublons '(1 1 2 2 4 5)) --> (1 2 4 5)
Voici mon code:
(define (doublons l)
(cond ((or (null? l) (null? (cdr l))) l)
((equal? (car l) (cadr l)) (doublons (cdr l)))
(else (cons (car l) (doublons (cdr l))))
)
)
Il fonctionne lorsque les éléments de la liste sont des nombres.
En revanche il ne fonctionne pas pour des éléments autre que des nombres,
(doublons '((1 1) (1 2) (1 1))) renvoie ((1 1) (1 2) (1 1))
Comment surmonter ce problème, j'ai passé énormement de temps dessus et reste bloqué.
Merci d'avance.