gpt4 book ai didi

lisp - 在 Common Lisp 的列表中查找嵌套最多的列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:36:39 25 4
gpt4 key购买 nike

我是 Common Lisp 和函数式编程的新手,但我在 C、C++、C#、Java 等语言方面拥有丰富的经验。我无法在列表中找到嵌套最多的列表。我的输入是这样的:

(0 1 (2 3) 4 (5 (6 (7) 8)) 9)

我想获得此列表中嵌套最多的列表,在本例中为

(7)

我确实有一个想法,我可以通过某种方式将列表展平,直到只剩下一个子列表。为了说明我的意思,这里有几个步骤:

第 1 步 - 输入:

(0 1 (2 3) 4 (5 (6 (7) 8)) 9)

第 2 步 - 在“第一层”展平:

(0 1 2 3 4 5 (6 (7) 8) 9)

第 3 步 - 在“第二层”展平:

(0 1 2 3 4 5 6 (7) 8 9)

现在只剩下一个嵌套列表,这意味着这是嵌套最多的列表。但是我在这里看到一个问题,当出现两个或更多这样的列表时。请分享您对此的看法。

我在 Common Lisp 中将此过程付诸实践时遇到了问题,因此我将不胜感激一些正确方向的指示,也许是一些示例代码等等。这是一项家庭作业,所以我并不真正期待一个完整的解决方案,但如果有人指出可能更简单、更好的解决方案及其实现,我会很高兴。

最佳答案

这是我的解决方案,使用与 OP 类似的方法。 (如果有多个最深的item,则全部返回。)

我是用 Scheme 写的,它可能不会立即翻译成 Common Lisp,所以我不认为它是一个完整的赠品。尽管如此,它仍有可能会剧透,因此请谨慎行事。

(define (deepest lst)
(let ((filtered (filter pair? lst)))
(cond ((null? filtered) lst)
(else (deepest (concatenate filtered))))))

关于lisp - 在 Common Lisp 的列表中查找嵌套最多的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4682576/

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