gpt4 book ai didi

function - 结合 LISP 中的两个函数来原子化列表然后找到最大值?

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

所以,id 喜欢接受一个数字列表,将其原子化(以删除嵌套的整数),然后找到最大值。我编写了两个单独完成此任务的函数,但无法弄清楚如何在 LISP 中将它们组合起来,因此我可以进行一次调用并让它们同时运行。任何帮助,将不胜感激。

:Atomize function to remove nests 
:(atomify ‘( a (b c) (e (f (g h) i)) j)->(a b c e f g h i j)

(defun atomify (numbers)
(cond ((null numbers) nil)
((atom (car numbers))
(cons (car numbers)
(atomify (cdr numbers))))
(t
(append (atomify (car numbers))
(atomify (cdr numbers))))))



:Max value of a list of integers function

(defun large_atom (numbers)
(if (null numbers)
0
(max (first numbers)
(large_atom (rest numbers)))))

最佳答案

杰米。你的方式有两个步骤:1.扁平化列表2.从第一步的结果中找到最大值在这种情况下,这是真正的方式。但是您需要通过一个函数调用来完成。这很容易。只需使用 labels , apply当然还有max

(defun foo (lst)
(labels ((flatten (lst acc)
(cond
((null lst)
acc)
((consp (car lst))
(flatten (cdr lst) (flatten (car lst) acc)))
(t
(flatten (cdr lst) (cons (car lst) acc))))))
(apply #'max (flatten lst nil))))

另一种方法是不展平源列表。但在这种情况下,您需要找到第一个值以与其他值进行比较。亲自尝试。

关于function - 结合 LISP 中的两个函数来原子化列表然后找到最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47279741/

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