fork download
  1. ; taken from http://c...content-available-to-author-only...e.com/a/23495/16293
  2. (defn divide [n]
  3. (loop [lv [] rv [] d (reverse (sort n))]
  4. (if (empty? d)
  5. [lv rv]
  6. (if (> (reduce + lv) (reduce + rv))
  7. (if (>= (count lv ) (count rv))
  8. (recur lv (conj rv (first d)) (into [] (rest d)))
  9. (recur (conj lv (last d)) rv (pop d)))
  10. (if (<= (count lv ) (count rv))
  11. (recur (conj lv (first d)) rv (into [] (rest d)) )
  12. (recur lv (conj rv (last d)) (pop d)))))))
  13.  
  14.  
  15. (defn display [[f s]]
  16. (println f)
  17. (println s)
  18. (println (str "Diff " (- (reduce + f) (reduce + s)))))
  19.  
  20. (->>
  21. [1 2 3 4]
  22. divide
  23. display)
  24.  
  25. (->>
  26. [1 4 5 6 7 8]
  27. divide
  28. display)
Success #stdin #stdout 1.63s 389120KB
stdin
Standard input is empty
stdout
[4 1]
[3 2]
Diff 0
[8 5 4]
[7 6 1]
Diff 3