Hi all, has anyone spent some thought on how to efficiently represent sparse vectors in Clojure? A naive scheme I came up with is using a vector of [idx val] pairs, e.g.: (def sparse-vec [[12 "a"][23 "aa"][25 "aaa"][234 "aaaa"]])
Accessing a value at an idx can be done so: (get-nth sparse-vec 25) => "aaa" with: (defn get-nth [sparse-vec n] (let [indices (map (fn [[i _]] i) sparse-vec) idx (java.util.Collections/binarySearch indices n) [_ v] (nth sparse-vec idx)] v)) For this to work the indices have to be in order. Can anyone think of more efficient (algorithmically and implementation wise) ways of doing this? Kind Regards Andreas -- 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