Whoa! Thanks Juan. I will start to understand/analyze this...
________________________________ From: clojure@googlegroups.com [mailto:clojure@googlegroups.com] On Behalf Of JuanManuel Gimeno Illa Sent: Tuesday, May 03, 2011 11:40 AM To: clojure@googlegroups.com Subject: Re: RE: Multi-level bucketing problem I'm sure this can be simplyfied: (defn mlg [attrs data] (if (empty? attrs) [ (reduce + (map :mv data)) {:children data}] (let [parts (group-by (first attrs) data) subtrees (map (fn [[value data]] [value (mlg (rest attrs) (map #(dissoc % (first attrs)) data))]) parts)] (reduce (fn [[sum tree] [value [sumsubtree subtree]]] [(+ sum sumsubtree) (update-in tree [:children] conj (assoc subtree :path [(first attrs) value] :mv sumsubtree))] ) [ 0.0 { :children [] }] subtrees)))) Returns a pair with the sum for all items and a tree. Each tree is represented as a dictionary, and inner nodes of the tree have three keys: - :mv the sum of :mv's of its children - :path a pair of attr-value that represents all the leaves in the subtree - :children the subtrees of this level Leaves are represented as dictionaries with only the keys :sec_id and :mv. I've forked your gist, so you can grab the code directly from github https://gist.github.com/952861 Best regards, Juan Manuel -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en