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

Reply via email to