; taken from http://c...content-available-to-author-only...e.com/a/23495/16293
(defn divide [n]
(loop [lv [] rv [] d (reverse (sort n))]
(if (empty? d)
[lv rv]
(if (> (reduce + lv) (reduce + rv))
(if (>= (count lv ) (count rv))
(recur lv
(conj rv
(first d
)) (into
[] (rest d
))) (recur
(conj lv
(last d
)) rv
(pop d
))) (if (<= (count lv ) (count rv))
(recur
(conj lv
(first d
)) rv
(into
[] (rest d
)) ) (recur lv
(conj rv
(last d
)) (pop d
)))))))
(defn display [[f s]]
(println f)
(println s)
(println (str "Diff " (- (reduce + f) (reduce + s)))))
(->>
[1 2 3 4]
divide
display)
(->>
[1 4 5 6 7 8]
divide
display)
OyB0YWtlbiBmcm9tIGh0dHA6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5lLmNvbS9hLzIzNDk1LzE2MjkzCihkZWZuIGRpdmlkZSBbbl0KIChsb29wIFtsdiBbXSBydiBbXSBkIChyZXZlcnNlIChzb3J0IG4pKV0KICAoaWYgKGVtcHR5PyBkKQogICBbbHYgcnZdCiAgIChpZiAoPiAocmVkdWNlICsgbHYpIChyZWR1Y2UgKyBydikpCiAgICAgKGlmICg+PSAoY291bnQgbHYgKSAoY291bnQgcnYpKQogICAgICAgKHJlY3VyIGx2IChjb25qIHJ2IChmaXJzdCBkKSkgKGludG8gW10gKHJlc3QgZCkpKQogICAgICAgKHJlY3VyIChjb25qIGx2IChsYXN0IGQpKSBydiAocG9wIGQpKSkgCiAgICAgKGlmICg8PSAoY291bnQgbHYgKSAoY291bnQgcnYpKQogICAgICAgKHJlY3VyIChjb25qIGx2IChmaXJzdCBkKSkgcnYgKGludG8gW10gKHJlc3QgZCkpICkKICAgICAgIChyZWN1ciBsdiAoY29uaiBydiAobGFzdCBkKSkgKHBvcCBkKSkpKSkpKQoKCiAoZGVmbiBkaXNwbGF5IFtbZiBzXV0KICAgKHByaW50bG4gZikKICAgKHByaW50bG4gcykKICAgKHByaW50bG4gKHN0ciAiRGlmZiAiICgtIChyZWR1Y2UgKyBmKSAocmVkdWNlICsgcykpKSkpCgooLT4+IAogWzEgMiAzIDRdCiBkaXZpZGUgCiBkaXNwbGF5KQoKKC0+PiAKIFsxIDQgNSA2IDcgOF0KIGRpdmlkZSAKIGRpc3BsYXkp