2016-10-20 23 views
0

我想寫一個Scheme函數,它將返回在輸入列表中找到的唯一元素。這個功能應該與原子,配對和列表一起工作。我的意思是如果輸入列表看起來像'(1 1 2(2。2)(2。2)(4 3)(4 3)3 5 2 4),函數應該返回(5)。從列表中刪除所有非唯一元素(包括原子,對,列表)計劃

這裏是我當前的代碼:

(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) 

這裏的問題是,它不僅能消除重複。

+0

你到目前爲止嘗試過什麼?你能問一個關於這個問題的具體問題嗎?現在好像你希望我們爲你寫這篇文章,我們在這裏沒有做。請閱讀以下內容:http://meta.programmers.stackexchange.com/questions/6166/open-letter-to-students-with-homework-problems – EJoshuaS

回答

0

我做這個至今:

(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) 

就像你看到的,它不僅能消除重複。我對這種類型的編程不熟悉,而且我的命令性思維能夠防止以聲明方式思考的任何嘗試。