19 lines
453 B
Haskell
19 lines
453 B
Haskell
#!/usr/bin/runhaskell
|
|
|
|
import Control.Monad
|
|
import System.IO
|
|
|
|
pi_ = g(1,0,1,1,3,3) where
|
|
g (q,r,t,k,n,l) =
|
|
if 4*q+r-t < n*t
|
|
then n : g (10*q, 10*(r-n*t), t, k, div (10*(3*q+r)) t - 10*n, l)
|
|
else g (q*k, (2*q+r)*l, t*l, k+1, div (q*(7*k+2)+r*l) (t*l), l+2)
|
|
|
|
digs = insertPoint digs'
|
|
where insertPoint (x:xs) = x:'.':xs
|
|
digs' = map (head . show) pi_
|
|
|
|
main = do
|
|
hSetBuffering stdout $ BlockBuffering $ Just 80
|
|
forM_ digs putChar
|