gpt4 book ai didi

Lisp 排序函数

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

我正试图在 Lisp 中创建一个(不知何故)精细的排序函数。我知道有 lambda 运算符可以让我的工作更轻松,但我找不到任何有用的东西,所以我希望你能帮助我。

作为输入,我有一个像这样的嵌套列表:

    ((o1 10 15 20) (o2 5 14 20) (o3 7 8 8))

输出应该是一个像这样的嵌套列表:

    ((o1 1 1 1) (o2 3 2 1) (o3 2 3 3))

更具体地说,将 o1 的第一个元素与 o2o3 的第一个元素进行比较,返回值应该是位置(在上面的示例中,10 大于 5 和 7,因此它将位于结果列表中的第一个位置)等等。

最高的数字将获得第一名。

(有点像打分功能,有些同学做一个应用,比较他们的features numbers,features number最多的人获得第一名,但是当比较使用不同技术的数量时,他可能获得第二名或第三名)。

谢谢,我希望你能帮助我

最佳答案

一点点探索是有序的。

[3]> (setq a '((o1 10 15 20) (o2 5 14 20) (o3 7 8 8)))
((O1 10 15 20) (O2 5 14 20) (O3 7 8 8))

[4]> (setq b (apply #'mapcar #'list a))
((O1 O2 O3) (10 5 7) (15 14 8) (20 20 8))

[5]> (setq c (mapcar #'(lambda(x)(sort x #'>)) (cdr b)))
((10 7 5) (15 14 8) (20 20 8))

[6]> (mapcar #'(lambda(g)(cons (car g) (mapcar #'1+
(mapcar #'position (cdr g) c)))) a)
((O1 1 1 1) (O2 3 2 1) (O3 2 3 3))

现在搅拌、成型并在 190 摄氏度下烘烤直至准备就绪。

关于Lisp 排序函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16810189/

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