Clojure Even List in even 计数
Clojure Even List within even counts
目前我正在尝试将我在 clojure 中的列表划分为偶数的偶数部分。
解释一下。
我有
(def a '(1 2 3 4 5 6 7 8 9 10))
我想做的是给它一个分区函数并创建偶数列表。
所以如果我将我的列表分成 2,我希望它看起来像
((1 2 3 4 5 6) (7 8 9 10)) or
((1 2 3 4)(5 6 7 8 9 10)) producing 2 lists with even counts.
或者如果我想按 4 分成偶数列表,它看起来像
((1 2)(3 4)(5 6)(7 8 9 10))
我将永远分裂 (ex. 2,4,8,16,32)
。但我希望每个 return 列表的计数都是偶数,没有余数。
我不知所措,创建了许多分区函数,但都不起作用。感谢任何帮助。
我会这样做:
(def a '(1 2 3 4 5 6 7 8 9 10))
(defn trunc-to-even
"Truncates a value the largest even int less than or equal to value"
[val]
(* 2 (Math/floor (/ val 2))))
(defn even-lists [some-list]
(let [half-even (trunc-to-even (/ (count some-list) 2))]
(split-at half-even some-list )))
(println (even-lists a))
;=> [(1 2 3 4) (5 6 7 8 9 10)]
将以上一项标记为正确答案。我能够使用此方法将其进一步分解以分成偶数列表。
(defn trunc-to-even
"Truncates a value the largest int less than or equal to value"
[val]
(* 2 (Math/floor (/ val 2))))
(defn split-2 [some-list]
(let [half-even (trunc-to-even (/ (count some-list) 2))]
(split-at half-even some-list )))
(defn split-4 [x]
(apply concat (pmap split-2(concat (split-2 x)))))
这样做我可以继续在 8-16-32 分裂。
目前我正在尝试将我在 clojure 中的列表划分为偶数的偶数部分。 解释一下。
我有
(def a '(1 2 3 4 5 6 7 8 9 10))
我想做的是给它一个分区函数并创建偶数列表。 所以如果我将我的列表分成 2,我希望它看起来像
((1 2 3 4 5 6) (7 8 9 10)) or
((1 2 3 4)(5 6 7 8 9 10)) producing 2 lists with even counts.
或者如果我想按 4 分成偶数列表,它看起来像
((1 2)(3 4)(5 6)(7 8 9 10))
我将永远分裂 (ex. 2,4,8,16,32)
。但我希望每个 return 列表的计数都是偶数,没有余数。
我不知所措,创建了许多分区函数,但都不起作用。感谢任何帮助。
我会这样做:
(def a '(1 2 3 4 5 6 7 8 9 10))
(defn trunc-to-even
"Truncates a value the largest even int less than or equal to value"
[val]
(* 2 (Math/floor (/ val 2))))
(defn even-lists [some-list]
(let [half-even (trunc-to-even (/ (count some-list) 2))]
(split-at half-even some-list )))
(println (even-lists a))
;=> [(1 2 3 4) (5 6 7 8 9 10)]
将以上一项标记为正确答案。我能够使用此方法将其进一步分解以分成偶数列表。
(defn trunc-to-even
"Truncates a value the largest int less than or equal to value"
[val]
(* 2 (Math/floor (/ val 2))))
(defn split-2 [some-list]
(let [half-even (trunc-to-even (/ (count some-list) 2))]
(split-at half-even some-list )))
(defn split-4 [x]
(apply concat (pmap split-2(concat (split-2 x)))))
这样做我可以继续在 8-16-32 分裂。