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 分裂。