Mercurial > vba-clojure
diff clojure/com/aurellem/title.clj @ 81:db8e0a563c8e
generated intro
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Fri, 09 Mar 2012 01:43:25 -0600 |
parents | |
children | 04d539d26bdc |
line wrap: on
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/clojure/com/aurellem/title.clj Fri Mar 09 01:43:25 2012 -0600 1.3 @@ -0,0 +1,140 @@ 1.4 +(ns com.aurellem.title 1.5 + (:use (com.aurellem gb-driver vbm))) 1.6 + 1.7 +(defn delayed-key 1.8 + ([key delay total] 1.9 + (concat (repeat delay []) [key] (repeat (- total delay 1) []))) 1.10 + ([key total] 1.11 + (delayed-key key (dec total) total))) 1.12 + 1.13 +(defn no-action [length] 1.14 + (repeat length [])) 1.15 + 1.16 +(defn start-summary [] 1.17 + (nth (registers) 2)) 1.18 + 1.19 +(defn common-initial-elements [baseline moves] 1.20 + (loop [common 0 b baseline m moves] 1.21 + (if (empty? m) common 1.22 + (if (= (first b) (first m)) 1.23 + (recur (inc common) (rest b) (rest m)) 1.24 + common)))) 1.25 + 1.26 +(defn earliest-press 1.27 + [start-frame 1.28 + end-frame 1.29 + key 1.30 + summary-fn] 1.31 + (let [action-length (- end-frame start-frame) 1.32 + baseline (no-action action-length)] 1.33 + (print "establishing baseline...") 1.34 + (play-moves start-frame baseline) 1.35 + (let [bad-value (summary-fn)] 1.36 + (println bad-value) 1.37 + (loop [n 0] 1.38 + (let [moves (delayed-key key n action-length) 1.39 + header-length 1.40 + (common-initial-elements moves baseline)] 1.41 + (print "length" (inc n) "...") 1.42 + (without-saves 1.43 + (play-moves 1.44 + (+ start-frame header-length) 1.45 + (drop header-length moves))) 1.46 + (let [result (summary-fn)] 1.47 + (println result) 1.48 + (if (not= result bad-value) 1.49 + (let [keys (delayed-key key (inc n))] 1.50 + (play-moves start-frame keys) 1.51 + keys) 1.52 + (recur (inc n))))))))) 1.53 + 1.54 + 1.55 +(defn search-first 1.56 + [start-frame 1.57 + baseline 1.58 + gen-move-fn 1.59 + summary-fn] 1.60 + (print "establishing baseline...") 1.61 + (play-moves start-frame baseline) 1.62 + (let [bad-value (summary-fn)] 1.63 + (println bad-value) 1.64 + (loop [n 0] 1.65 + (let [trial-moves (gen-move-fn n) 1.66 + header-length 1.67 + (common-initial-elements trial-moves baseline)] 1.68 + (print "length" (inc n) "...") 1.69 + (without-saves 1.70 + (play-moves 1.71 + (+ start-frame header-length) 1.72 + (drop header-length trial-moves))) 1.73 + (let [result (summary-fn)] 1.74 + (println result) 1.75 + (if (not= result bad-value) 1.76 + (let [keys (take (inc n) trial-moves)] 1.77 + (play-moves start-frame keys) 1.78 + keys) 1.79 + (recur (inc n)))))))) 1.80 + 1.81 +(defn title-search 1.82 + [start-frame 1.83 + end-frame 1.84 + key 1.85 + summary-fn] 1.86 + (let [action-length (- end-frame start-frame)] 1.87 + (search-first 1.88 + start-frame 1.89 + (no-action action-length) 1.90 + (fn [n] (delayed-key key n action-length)) 1.91 + summary-fn))) 1.92 + 1.93 +(defn gen-title [] 1.94 + (let [start0 (no-action 300)] 1.95 + (play-moves 0 start0) 1.96 + (let [start->first-press 1.97 + (title-search (frame) (+ 50 (frame)) [:a] start-summary) 1.98 + first-press->second-press 1.99 + (title-search (frame) (+ 100 (frame)) [:start] start-summary) 1.100 + second-press->third-press 1.101 + (title-search (frame) (+ 151 (frame)) [:a] start-summary) 1.102 + new-game 1.103 + (title-search (frame) (+ 151 (frame)) [:a] start-summary)] 1.104 + (concat 1.105 + start0 1.106 + start->first-press 1.107 + first-press->second-press 1.108 + second-press->third-press 1.109 + new-game)))) 1.110 + 1.111 +(def title 1.112 + [[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.113 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.114 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.115 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.116 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.117 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.118 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.119 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.120 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.121 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.122 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.123 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.124 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.125 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.126 + [] [] [] [] [] [] [] [] [] [] [] [] [] [ :a] [] [] [] [] [] [] [] 1.127 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.128 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.129 + [] [] [] [] [] [] [] [] [] [:start] [] [] [] [] [] [] [] [] [] [] 1.130 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.131 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.132 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.133 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.134 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.135 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.136 + [] [] [] [] [ :a] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.137 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.138 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.139 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.140 + [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 1.141 + [] [] [] [] [] [ :a]]) 1.142 + 1.143 +