On Fri, 24 Aug 2007, Mirko Rahn wrote:

tm = sum . takeWhile(>0) . iterate f . f
   where f = flip div 5

Quite nice. I like

tm5 0 = 0
tm5 n = let q = div n 5 in q + tm5 q

This version corresponds to what I'm think when parsing |tm|, so I wrote it down directly.

Since the original poster used the message title "style", I want to mention that his solution is good style, because it keeps logical steps separated, and thus lets you inspect meaningful interim results. (iterate f . f) computes the number of natural numbers up to n with factors 5, 5^2, 5^3 and so on. Then you like to sum these up (sum), but before this, you must limit the list to a reasonable finite prefix (takeWhile (>0)). Of course, using 'show' and counting the zeros is more intuitive. It is not efficient, but it will serve as a nice test of 'tm's correctness.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to