Mercurial > vba-clojure
diff clojure/com/aurellem/run/util.clj @ 328:35960b03693f
improved delayed-difference with memoization
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Thu, 05 Apr 2012 15:05:08 -0500 |
parents | fe6fd2323264 |
children | a452deec2882 |
line wrap: on
line diff
1.1 --- a/clojure/com/aurellem/run/util.clj Thu Apr 05 12:59:30 2012 -0500 1.2 +++ b/clojure/com/aurellem/run/util.clj Thu Apr 05 15:05:08 2012 -0500 1.3 @@ -62,17 +62,18 @@ 1.4 (recur test high) 1.5 (recur low test)))))))) 1.6 1.7 + 1.8 (defn delayed-difference 1.9 [base alt delay difference-metric [moves root :as script]] 1.10 (let [generator 1.11 (memoize 1.12 - (fn [n] 1.13 + (fn gen [n] 1.14 (run-moves 1.15 root 1.16 (repeat n base)))) 1.17 len 1.18 (binary-search 1.19 - (fn [n] 1.20 + (memoize (fn [n] 1.21 (= (difference-metric 1.22 (run-moves 1.23 (generator n) 1.24 @@ -80,7 +81,7 @@ 1.25 (difference-metric 1.26 (run-moves 1.27 (generator n) 1.28 - (repeat (inc delay) base)))))) 1.29 + (repeat (inc delay) base))))))) 1.30 new-moves (concat moves (repeat len base) [alt]) 1.31 new-state (run-moves (generator len) [alt])] 1.32 [new-moves new-state]))