在 clojure 中查找树的最大值和最小值
Find the max and min values of a tree in clojure
我需要开发一个名为 bounds 的函数,它将嵌套的数字列表作为其唯一参数(即:一棵树)。边界应该 return 树中的最大值和最小值。
例如:= = (bounds '(1 (-2 17 (4) -8 (-6 13) (-8 17)
我有一个使用 apply max apply min 和 flatten 的简短版本我只是无法理解它
使用 Clojure
您需要 flatten
函数:
(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]
P.S。如果将列表写成向量会更容易(不需要引用!):
(println
(bounds [1 [-2 17 [4]] -8 [-6 13]] ))
;=> [-8 17]
我需要开发一个名为 bounds 的函数,它将嵌套的数字列表作为其唯一参数(即:一棵树)。边界应该 return 树中的最大值和最小值。 例如:= = (bounds '(1 (-2 17 (4) -8 (-6 13) (-8 17) 我有一个使用 apply max apply min 和 flatten 的简短版本我只是无法理解它
使用 Clojure
您需要 flatten
函数:
(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]
P.S。如果将列表写成向量会更容易(不需要引用!):
(println
(bounds [1 [-2 17 [4]] -8 [-6 13]] ))
;=> [-8 17]