2016-10-20 3 views
0

Ich versuche, eine Scheme-Funktion zu schreiben, die die eindeutigen Elemente in der Eingabeliste zurückgibt. Diese Funktion sollte mit Atomen, Paaren und Listen arbeiten. Ich meine, wenn die Eingabeliste wie folgt aussieht (1 1 2 (2. 2) (2. 2) (4 3) (4 3) 3 5 2 4), sollte die Funktion zurückkehren (5).Löschen Sie alle nicht eindeutigen Elemente (einschließlich Atome, Paare, Listen) aus der Liste Schema

Hier ist mein aktueller Code:

(define (delduplicates L) 
    (cond ((null? L) '()) 
      ((list? (member (car L) (cdr L))) 
      (delduplicates(cdr L))) 
      (#T (cons (car L) (delduplicates (cdr L)))))) 
(delduplicates '(1 1 2 3 3 4 4 5)) > (1 2 3 4 5) 

Das Problem dabei ist, dass es Duplikate nur entfernt.

+0

Was haben Sie bisher versucht? Kannst du eine spezifische Frage dazu stellen? Im Moment scheint es, als würdest du erwarten, dass wir das für dich schreiben, was wir hier nicht tun. Bitte lesen Sie das folgende: http://meta.programmers.stackexchange.com/questions/6166/open-letter-to-students-with-homework-problems – EJoshuaS

Antwort

0

Ich habe dies bisher getan:

(define (delduplicates L) 
(cond ((null? L) '()) 
((list? (member (car L) (cdr L)))(delduplicates(cdr L))) 
(#T (cons (car L) (delduplicates (cdr L)))))) 
(delduplicates '(1 1 2 3 3 4 4 5)) 
> (1 2 3 4 5) 

Da u sehen können, es entfernt nur Duplikate. Ich bin neu in dieser Art von Programmierung und meine imperative Denkweise verhindert jeden Versuch, auf eine deklarative Weise zu denken.

Verwandte Themen