gpt4 book ai didi

scheme - 如何使用方案删除列表中的第三个元素

转载 作者:行者123 更新时间:2023-12-04 05:11:41 24 4
gpt4 key购买 nike

这就是我想要的:

(delete-third1 '(3 7 5))    ==>  (3 7)
(delete-third1 '(a b c d)) ==> (a b d)

所以我做了类似的事情:
(define (delete-third1 LS ) (list(cdr LS)))

返回
(delete-third1 '(3 7 5))
((7 5))

什么时候应该 (3 7) .我做错了什么?

最佳答案

想什么cdr正在做。 cdr说“给定一个列表,切掉第一个值并返回列表的其余部分”。所以它只删除第一个值,然后返回该列表的其余部分(这正是您所看到的)。因为它返回一个列表,所以你不需要 list (cdr LS)在那里。

你想要的是这样的:

(define (delete-n l n)
(if (= n 0)
(cdr l)
(append (list (car l)) (delete-n (cdr l) (- n 1)))))

(define (delete-third l)
(delete-n l 2))

那么这是如何工作的呢? delete-n将删除 n通过保持我们正在运行的元素的运行计数来确定列表的第 th 个元素。如果我们没有达到 n th 元素,然后将该元素添加到列表中。如果是,则跳过该元素并将其余元素添加到我们的列表中。

然后我们简单地定义 delete-thirddelete-n它删除了第三个元素(当我们从 0 开始计数时,它是元素 2)。

关于scheme - 如何使用方案删除列表中的第三个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14845304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com