On 7 Aug 2010, at 20:23, gary ng wrote:

> On Sat, Aug 7, 2010 at 8:14 AM, Steve Purcell <st...@sanityinc.com> wrote:
>> Oh, right, so maybe:
>> (last (take-while #(< (apply + %) 100) (reductions conj [] (iterate inc
>> 0))))
>> => [0 1 2 3 4 5 6 7 8 9 10 11 12 13]
>> -Steve
> 
> or
> 
> user=> (map second (take-while (fn [e] (< (first e) 100)) (rest
> (reductions (fn [a x] [(+ (first a) x) x]) [0 0] (iterate inc 0)))))
> (0 1 2 3 4 5 6 7 8 9 10 11 12 13)
> 


Nice - that's about twice as fast as my version (with the 100 limit scaled up 
to 1 million), though perhaps a less general pattern since the code structure 
assumes knowledge of +'s cumulative nature.

-Steve

-- 
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