【发布时间】:2011-04-26 18:33:31
【问题描述】:
(defn min-max-by-columns [s]
(reduce (fn [[smallest largest] y]
[(map min smallest y) (map max largest y)])
[(first s) (first s)]
s))
我正在尝试找出一个大表(固定长度序列的序列)每一列的最大值和最小值
上面的代码适用于小表,但对于大表我得到一个堆栈溢出错误
clojure.core/map/fn--3594 (core.clj:2370)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:60)
clojure.lang.RT.seq (RT.java:447)
clojure.core/seq (core.clj:133)
clojure.core/map/fn--3594 (core.clj:2371)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:60)
clojure.lang.RT.seq (RT.java:447)
clojure.core/seq (core.clj:133)
clojure.core/map/fn--3594 (core.clj:2371)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:60)
clojure.lang.RT.seq (RT.java:447)
clojure.core/seq (core.clj:133)
clojure.core/map/fn--3594 (core.clj:2371)
...
我是不是因为 [(first s) (first s)] 这条线而抓着头?我需要这些值才能使算法起作用。
我该如何解决这个问题?
【问题讨论】:
-
在我看来你并没有抓住头部,但我很想知道如果你只做了一个 min 或 max 会发生什么,因此可以采取 @987654323 @ 超出等式,例如,
(defn min-columns [s] (reduce (fn [x y] (map min x y)) s)).