Thanks to everyone for the solutions. I actually wrote this terribly ugly function. Terrible. This should go in the "don't write code like this section" in clojure book.
(defn md2 [d1 d2 d3 d4 d5] (let [cnt (count d1)] (loop [i 0 v []] (if (= i cnt) v (do (if (= (get d1 i) (reduce min (map #(get % i) (list d1 d2 d3 d4 d5)))) (recur (inc i) (conj v 1)) (recur (inc i) (conj v 0)))))))) On Dec 2, 7:43 pm, Chouser <chou...@gmail.com> wrote: > >> On Wed, Dec 2, 2009 at 6:22 PM, Don <josereyno...@gmail.com> wrote: > >> > Thank you Stefan and Kevin. Awesome solutions that answer my > >> > question. However I actually made a mistake in posing my question. > >> > Let me attempt to ask my question again. > > >> > I have 5 vectors as such: > >> > a [2 4 6 7] > >> > b [1 3 9 2] > >> > c [2 4 5 6] > >> > d [6 1 3 8] > >> > e [4 8 2 1] > > >> > and the output i want is this > > >> > a1 [0 0 0 0] > >> > b1 [1 0 0 0] > >> > c1 [0 0 0 0] > >> > d1 [0 1 0 0] > >> > e1 [0 0 1 1] > > (defn min-cols [v] > (map #(apply min-key % (range (count v))) > (apply map vector v))) > > (defn mark-cols [v m] > (map (fn [i] (map #(if % 1 0) (map = m (repeat (count m) i)))) > (range (count v)))) > > (def v [[2 4 6 7] [1 3 9 2] [2 4 5 6] [6 1 3 8] [4 8 2 1]]) > > user=> (mark-cols v (min-cols v)) > ((0 0 0 0) (1 0 0 0) (0 0 0 0) (0 1 0 0) (0 0 1 1)) > > --Chouser -- 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