在clojure中查找树的最大值和最小值
我需要开发一个名为bounds的函数,它将嵌套的数字列表作为唯一的参数(即:树)。边界应返回树中的最大值和最小值。 例如:==(界限)(1(-217(4)-8(-613)-817) 我有一个使用apply max apply min和flatten的短版本,我就是想不起来在clojure中查找树的最大值和最小值,clojure,tree,Clojure,Tree,我需要开发一个名为bounds的函数,它将嵌套的数字列表作为唯一的参数(即:树)。边界应返回树中的最大值和最小值。 例如:==(界限)(1(-217(4)-8(-613)-817) 我有一个使用apply max apply min和flatten的短版本,我就是想不起来 使用clojure您需要展平功能: (defn bounds [& args] (let [flat-vals (flatten args) ] ;=> (1 -2 17 4 -8 -6 13)
使用clojure您需要
展平
功能:
(defn bounds
[& args]
(let [flat-vals (flatten args) ] ;=> (1 -2 17 4 -8 -6 13)
[ (apply min flat-vals) (apply max flat-vals) ] ))
(println
(bounds '(1 (-2 17 (4)) -8 (-6 13))))
;=> [-8 17]
另外,如果你把你的列表写成向量,那就更容易了(不需要引用!)
(println
(bounds [1 [-2 17 [4]] -8 [-6 13]] ))
;=> [-8 17]
发布您目前拥有的代码。请单击向上投票和“回答”框!谢谢,AlanFlatte为您执行递归:另请参阅postwalk和postwalk演示:和