(defn min-dist [coll] (let [minval (reduce min coll)] (map #(if (= minval %) 1 0) coll)))
this function, if you pass user=> (min-dist [2 1 2 6 4]) (0 1 0 0 0) assume the 5 vectors are stored in a b c d e. user=> (apply map vector (map min-dist (map vector a b c d e))) ([0 0 0 0] [1 0 0 0] [0 0 0 0] [0 1 0 0] [0 0 1 1]) On Wed, Dec 2, 2009 at 7:59 PM, Don <josereyno...@gmail.com> wrote: > I still can't figure it out. If have this set. > > 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] > > If I do (reduce min (map #(get % 0) (list a b c d e))) > > It grabs the min value from index 0 of the five vectors and returns 1 > corresponding to 'b'. But I'm not sure how I would determine it's > coming from 'b'. I need to know that it comes from 'b' in order to > build the new vector. > > If I do (vec (map min a b c d e)) > > It grabs the min value from index (0, 1, 2, 3) and puts it in a vector > > [1 1 2 1] > > And I don't know from what vector the minimum value is coming from. > > The solution is probably already here but I can't think of it. Sorry. > > > On Dec 2, 3:40 pm, Wilson MacGyver <wmacgy...@gmail.com> wrote: >> assuming, vector a b c d e are already defined. >> >> I'd do >> >> user=> (map vector a b c d e) >> ([2 1 2 6 4] [4 3 4 1 8] [6 9 5 3 2] [7 2 6 8 1]) >> >> you can then use the solutions provided from previous messages >> to find the min value of each vector. >> >> so you then end up with >> >> [0 1 0 0 0] [0 0 0 1 0] [0 0 0 0 1] [0 0 0 0 1] >> >> at that point, you repeat the same trick >> >> (map vector [0 1 0 0 0] [0 0 0 1 0] [0 0 0 0 1] [0 0 0 0 1]) >> >> and that will give you >> >> [0 0 0 0] [1 0 0 0] [0 0 0 0] [0 1 0 0] [0 0 1 1] >> >> >> >> >> >> 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] >> >> > Now I'm not sure if it can be done in one swoop, or should be done in >> > a loop. I was thinking a loop, but I'm having trouble thinking about >> > it. >> >> > I initially thought of creating a function that takes in 5 vectors and >> > returns a single vector. So the first time its called it would >> > return a1 [0 0 0 0] then call it again and return b1 [1 0 0 0] etc... >> > I know it will repeat calculations however I couldn't come up with >> > anything else. >> >> > Thank you. >> >> > On Dec 2, 2:55 pm, Kevin Downey <redc...@gmail.com> wrote: >> >> user=> (vec (map min [2 4 6 7] [1 3 9 2] [2 4 5 6] [6 1 3 8] [4 8 2 1])) >> >> [1 1 2 1] >> >> user=> >> >> >> On Wed, Dec 2, 2009 at 2:53 PM, Stefan Kamphausen >> >> >> <ska2...@googlemail.com> wrote: >> >> > Hi, >> >> >> > On Dec 2, 11:43 pm, Don <josereyno...@gmail.com> wrote: >> >> >> I am having difficulty approaching this problem. I'm not sure if it >> >> >> can be done in one swoop, or requires a few steps. >> >> >> >> 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 I want to take the minimum value at a given index between the >> >> >> vectors. Therefore, minimum value at index 0 would yield the value 1 >> >> >> from vector b. >> >> >> > a quick shot would be >> >> >> > (reduce min (map #(get % 0) (list a b c d e))) >> >> >> > It would be nicer to have a vector of vectors or a list of vectors at >> >> > the beginning, probably. >> >> >> > Cheers, >> >> > Stefan >> >> >> > -- >> >> > 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 >> >> >> -- >> >> And what is good, Phaedrus, >> >> And what is not good— >> >> Need we ask anyone to tell us these things? >> >> > -- >> > 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 >> >> -- >> Omnem crede diem tibi diluxisse supremum. > > -- > 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 -- Omnem crede diem tibi diluxisse supremum. -- 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