gpt4 book ai didi

Clojure 中的排序列表

转载 作者:行者123 更新时间:2023-12-03 00:27:34 25 4
gpt4 key购买 nike

我正在尝试以特定方式对 Clojure 列表(或 seq,如果这就是它的名称)进行排序。我希望它按降序排列最后一项的优先级,然后按升序排列第一项的优先级。一个例子:

(def pnts '((1 2)
(2 4)
(3 2)
(4 10)
(5 3)
(6 1)
(7 2)))

(sort-by last > pnts)
;; ((4 10) (2 4) (5 3) (1 2) (3 2) (7 2) (6 1))
;; Notice how (1 2), (3 2), (7 2) are sorted. This
;; is correct and is what I want.

(按最后排序) 似乎可以解决问题,尽管这可能是因为点最初是按第一个 项排序的。我实现 ASCII/CLI 图形脚本的方式是我编写的点总是像 pnts 那样排序。我的问题是什么命令可以保证这样的排序首选项?

PS我尝试做(排序(juxt最后一个)(juxt> <)pnts)但无济于事。

最佳答案

我认为您使用 juxt 的做法是正确的。假设您的点都是数字,您只需组合 last- 即可模拟最后一个组件的降序自然顺序。

user=> (sort-by (juxt (comp - last) first) (shuffle pnts))
((4 10) (2 4) (5 3) (1 2) (3 2) (7 2) (6 1))

关于Clojure 中的排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21242357/

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