Sto usando Studente intermedio con Lambda in DrRacket, mi chiedevo come rimuovere i duplicati in un elenco, mantenendo l'ordine. Ad esempio (remove-dup (list 2 5 4 5 1 2))
produrrebbe (list 2 5 4 1)
. Finora, ho questo:Come eliminare i duplicati in un elenco, ma mantenere l'ordine
(define (remove-duplicates lst)
(cond
[(empty? lst) empty]
[(member? (first lst) (rest lst))
(remove-duplicates (rest lst))]
[else (cons (first lst) (remove-duplicates (rest lst)))]))
, ma c'è un problema dal momento che non mantiene l'ordine. Qualcuno può indicarmi la giusta direzione? Grazie per il tuo tempo.
In realtà, sembra che * non * mantenga l'ordine, semplicemente non mantiene il primo degli elementi duplicati. Sei sicuro che la tua soluzione non sia corretta? –
sfortunatamente la soluzione non è corretta. Per esempio se ho rimosso-duplicati (1 2 5 1 4), voglio (lista 1 2 5 4), invece del valore attuale di (lista 2 5 1 4). Scusate per il cattivo esempio. –
Stavo pensando di fare qualcosa come il primo della lista, e poi usare il filtro sul resto della lista con il primo numero. Tranne che non so come implementare quella haha. –