Scheme: comment supprimer doublons dans une liste

Scheme: comment supprimer doublons dans une liste - Langages fonctionnels - Programmation

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.

Reply

Marsh Posté le 08-05-2013 à 14:41:06   

Reply

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.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed