Clojure قائمة حتى ضمن التهم الموجهة إليه

حاليا أحاول تقسيم القوائم الخاصة بي في 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.

أو إذا كنت أرغب في التقسيم إلى أربعة في قوائم حتى تبدو وكأنها شيء من هذا القبيل

((1 2)(3 4)(5 6)(7 8 9 10)) 

سوف أقوم دائماً بتقسيم (مثال: 2،4،8،16،32) . لكنني أريد أن تكون كل قائمة مرتجعة لها حتى دون حساب.

أنا في ضائع وخلق العديد من وظائف التقسيم كل ذلك لا يعمل. أي مساعدة هو موضع تقدير.

1

5 إجابة

هنا كيف سأفعل ذلك:

(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)]
0
وأضاف
هذا يعمل بشكل جيد إذا أنا مقسم فقط من قبل اثنين. أريد أن أتمكن من تكوين القسم. طريقة للعمل أيضا مع 2،4،6،8 تقسيم القوائم مع قيم العد حتى لكل قائمة.
وأضاف المؤلف Jeffrey Morgan, مصدر

هنا كيف سأفعل ذلك:

(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)]
0
وأضاف
هذا يعمل بشكل جيد إذا أنا مقسم فقط من قبل اثنين. أريد أن أتمكن من تكوين القسم. طريقة للعمل أيضا مع 2،4،6،8 تقسيم القوائم مع قيم العد حتى لكل قائمة.
وأضاف المؤلف Jeffrey Morgan, مصدر

هنا كيف سأفعل ذلك:

(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)]
0
وأضاف
هذا يعمل بشكل جيد إذا أنا مقسم فقط من قبل اثنين. أريد أن أتمكن من تكوين القسم. طريقة للعمل أيضا مع 2،4،6،8 تقسيم القوائم مع قيم العد حتى لكل قائمة.
وأضاف المؤلف Jeffrey Morgan, مصدر

وضع علامة على واحد أعلاه كإجابة صحيحة. كنت قادرا على استخدام هذه الطريقة لمزيد من تقسيمها إلى فصل في قوائم حتى.

(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.

0
وأضاف

وضع علامة على واحد أعلاه كإجابة صحيحة. كنت قادرا على استخدام هذه الطريقة لمزيد من تقسيمها إلى فصل في قوائم حتى.

(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.

0
وأضاف