if you use (map f coll), with only 1 collection. it takes every item in the collection, and apply f to it.
so what I'm really doing is, taking "1 item" at a time from the collection. but "1 item" turns out to be a collection. I then apply a filter to it so it only returns what I want. On Thu, Mar 11, 2010 at 12:11 PM, Glen Rubin <rubing...@gmail.com> wrote: > it seems kind of weird that map would work like that. i understood > map as taking the first item of every collection and applying f to > it. e.g (map + [2 4] [6 8]) -> [8 12] > > In this case, since answer? takes a collection as argument I guess map > just applies answer? to each collection? but don't all the > collections have to be the same size or one will be exhausted? And > then it seems that answer is acting independently on each collection. > Is that because answer? only takes one argument, whereas a fcn like + > takes 2 arguments. Sorry, I am a little bit confused. The other > responses seemed very helpful too, but have not yet tried to figure > them out. thx! > > On Mar 10, 12:18 pm, Wilson MacGyver <wmacgy...@gmail.com> wrote: >> you can define a function to filter the result >> >> like >> >> (defn answer? [x] (filter #(every? integer? %) x)) >> >> and then just call it by doing >> >> user=> (map #(answer? %) (trips (range 1 7))) >> (() () ([3 4 5]) () ()) >> >> >> >> On Wed, Mar 10, 2010 at 1:20 PM, Glen Rubin <rubing...@gmail.com> wrote: >> > I am working on the following problem: >> >> > Find the only Pythagorean triplet, {a, b, c}, for which a + b + c = >> > 1000 >> >> > My strategy is to produce a series of triplets of a^2 + b^2 and then >> > filter out the ones where the c^2 is a perfect square, in order to >> > determine Pythagorean triplets. >> >> > I wrote a function to produce triplets that takes a range as input: >> >> > (use '[clojure.contrib.math :only (sqrt)]) >> >> > (defn trips [coll] >> > (loop [a (first coll) b (rest coll) trip []] >> > (cond (seq b) >> > (recur (first b) (rest b) (conj trip (map #(vector a % (sqrt (+ >> > (* >> > a a) (* % %)))) b))) >> > true trip))) >> >> > ,so if I want to see all triplets over the range of 1-7, I just do: >> >> > (trips (range 1 7)), which yields the following; >> >> > [([1 2 2.23606797749979] [1 3 3.1622776601683795] [1 4 >> > 4.123105625617661] [1 5 5.0990195135927845] [1 6 6.082762530298219]) >> > ([2 3 3.605551275463989] [2 4 4.47213595499958] [2 5 >> > 5.385164807134504] [2 6 6.324555320336759]) ([3 4 5] [3 5 >> > 5.830951894845301] [3 6 6.708203932499369]) ([4 5 6.4031242374328485] >> > [4 6 7.211102550927978]) ([5 6 7.810249675906654])] >> >> > Obviously the only Pythagorean triplet burried in there is 3, 4, 5. >> >> > Now, I can easily test a single vector for integers as follows: >> >> > (map integer? [5 6 7]) >> >> > However, the output of my trips function yields multiple collections >> > of vectors inside of a larger vector. I am completely befuddled as to >> > how to process this behemoth. >> >> > I guess I need to use some functions for merging collections? >> >> > Any help apprectiated. thanks!! >> >> > -- >> > 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