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 <[email protected]> wrote:
> >> On Wed, Dec 2, 2009 at 6:22 PM, Don <[email protected]> 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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en