Skip to content

Instantly share code, notes, and snippets.

View timsgardner's full-sized avatar

Tims Gardner timsgardner

  • Arcadia Technologies
  • Brooklyn, NY
View GitHub Profile
@timsgardner
timsgardner / dynamic_time_warping.clj
Last active August 29, 2015 14:10
dynamic time warping
(ns dtw.core)
(defn distance [a b]
(Math/Pow (- a b) 2))
(defn dtw [s t]
(let [n (count s)
m (count t)
bottom (apply hash-map
(mapcat (fn [i] [[i 0] Double/PositiveInfinity])
dtwMatrix2[s_List, t_List] :=
With[{n = Length@s, m = Length@t},
Fold[
{acc, pos} \[Function] pos /. {i_, j_} :>
ReplacePart[acc,
pos -> (s[[i - 1]] - t[[j - 1]])^2 +
Min[Part[acc, ##] & @@@ {{i - 1, j}, {i, j - 1}, {i - 1,
j - 1}}]],
SparseArray[{{1, 1} ->
0, {1, _} -> \[Infinity], {_, 1} -> \[Infinity]}, {n, m} + 1],
@timsgardner
timsgardner / tensor.clj
Created November 30, 2014 02:22
tensor
(defn tensor [init dims]
(reduce #(vec (repeat %2 %1)) init (reverse dims)))
(defn tensor-2 [init [d & dims]]
(vec (repeat d (if dims (tensor-2 init dims) init))))
@timsgardner
timsgardner / let.nb
Created December 5, 2014 06:26
mathematica let
SetAttributes[let, HoldAll]
let[bndgs_, expr_] :=
Activate[
Fold[
{acc, bndg} \[Function] Inactive[With][{bndg}, acc],
Inactivate[expr],
Reverse[Inactivate[bndgs]]]]
@timsgardner
timsgardner / pleat.clj
Last active August 29, 2015 14:10
pleat
(defn screw-up-some-collections-1 [xs ys]
(reduce
(fn [acc1, x]
(conj acc1
(reduce
(fn [acc2, y]
(conj acc2 [x y]))
[]
ys)))
[]
(time
(loop [i 1000000]
(if (> i 0)
(recur (dec i))
i)))
@timsgardner
timsgardner / gist:994f4fef6e29bb70f4e1
Last active August 29, 2015 14:10
simple benchmark 2
(def some-nums (vec (range 100000)))
(time (do (reduce conj '() some-nums) nil))
@timsgardner
timsgardner / gist:c9f7a82f28505895a828
Created December 6, 2014 16:28
simple benchmark 3
(def some-other-nums (doall (range 100000)))
(let [f (fn [x y] :bla)]
(time (do (reduce f '() some-other-nums) nil)))
@timsgardner
timsgardner / gist:fa70e394f4e27ccd54a2
Created December 6, 2014 18:01
arcadia boilerplate I find useful
(let [ns 'arcadia.core]
(require ns)
(in-ns ns)
(use
'arcadia.core
'arcadia.hydrate
'clojure.pprint
'clojure.repl))
@timsgardner
timsgardner / time-it.clj
Created December 9, 2014 04:04
time-it
(defn time-it
"Signature slightly awkward to resemble that of time-it-mac"
([f] (time-it f 1))
([n f]
(. clojure.lang.RT (StartStopwatch))
(dotimes [_ n] (f))
(let [t (. clojure.lang.RT StopStopwatch)]
(/ t n))))
(defmacro time-it-mac