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

Reply via email to