2007/8/26, Yitzchak Gale <[EMAIL PROTECTED]>: > Bjorn Bringert wrote: > > Here's a much more inefficient version, but it has the merit of being > > very easy to understand: > > > > tm_silly n = length $ takeWhile (=='0') $ reverse $ show $ product [1..n] > > Be careful with types - use Data.List.genericLength > here instead of length. Otherwise, tm_silly n is wrong for > n >= 13 (on my 32-bit machine) due to round-off error > in the Int type.
Are you sure you really tested tm_silly ? length is perfectly enough to count the 0 in n! since the number of zeros don't go over the Int limit before n = 8_589_934_615 (though this solution will stack overflow due to the product much sooned than that). -- Jedaï _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe