Nice!

Ran into a blogpost yesterday of someone calculating 'e', and I was
fiddling around after reading that with take-while looking for a way
to do exactly this.

user> (time (/ (apply + (repeatedly 10000000 (fn [] (inc (count (take-
while-acc + #(< % 1) (repeatedly #(rand)))))))) 10000000.0))
"Elapsed time: 36048.477374 msecs"
2.7183934

http://www.mostlymaths.net/2010/08/and-e-appears-from-nowhere.html

On Aug 8, 6:19 am, Randy Hudson <randy_hud...@mac.com> wrote:
> Nice!
>
> On Aug 7, 11:56 pm, Michał Marczyk <michal.marc...@gmail.com> wrote:
>
>
>
> > Yet another version:
>
> > (defn take-while-acc [f pred coll]
> >   (map (fn [_ x] x)
> >        (take-while pred (reductions f coll))
> >        coll))
>
> > Seems to work:
>
> > user> (take-while-acc + #(< % 100) (range))
> > (0 1 2 3 4 5 6 7 8 9 10 11 12 13)
>
> > Note that reductions does use an "accumulator" (in the form of a
> > closed over local), so the above works as requested. Also, this
> > version constructs no auxiliary data structures, not even two-element
> > vectors.
>
> > Sincerely,
> > Michał

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