【问题标题】:Delete ALL non unique elements (including atoms, pairs, lists) from list Scheme从列表方案中删除所有非唯一元素(包括原子、对、列表)
【发布时间】:2016-10-20 17:10:47
【问题描述】:

我正在尝试编写一个 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)

这样做的问题是它只删除重复项。

【问题讨论】:

标签: list scheme unique


【解决方案1】:

到目前为止我已经这样做了:

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

如您所见,它只删除重复项。我是这种编程的新手,我的命令式思维阻止了任何以声明方式思考的尝试。

【讨论】:

    猜你喜欢
    • 2015-01-08
    • 2013-06-27
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多