rlm@0: (ns coderloop.test-mega-tree) rlm@0: rlm@0: (rlm.ns-rlm/ns-clone rlm.light-base) rlm@0: (import '[com.coderloop.puzzles Megafasttree Megafasttree$Node]) rlm@0: rlm@0: rlm@0: (defn node [n] rlm@0: (Megafasttree$Node. n)) rlm@0: rlm@0: rlm@0: (defn tree [root] rlm@0: (doto (Megafasttree.) rlm@0: (.addRoot root))) rlm@0: rlm@0: rlm@0: (defn make-counter [] rlm@0: (let [a (atom -1)] rlm@0: (fn count [] (swap! a inc)))) rlm@0: rlm@0: rlm@0: (defn make-big-ass-tree [depth] rlm@0: (let [counter (make-counter) rlm@0: root (node (counter))] rlm@0: (loop [base [root] rlm@0: level 0] rlm@0: (if (= level depth) rlm@0: (tree root) rlm@0: (do rlm@0: (dorun (map rlm@0: #(doto % rlm@0: (.setLeftChild (node (counter))) rlm@0: (.setRightChild (node (counter)))) rlm@0: base)) rlm@0: (recur rlm@0: (apply concat (map #(vector (.toLeft %) (.toRight %)) rlm@0: base)) rlm@0: (inc level))))))) rlm@0: rlm@0: rlm@0: (defn test-shittiness [n] rlm@0: (time (do (.bfs (make-big-ass-tree n)) nil)))