main :: IO () main = mapM_ print [count 1 1 1 1, count 0.5 0.5 0.5 1] count :: Double -> Double -> Double -> Double -> Int count x y z r = length [(a, b, c) | a <- map fromIntegral [floor $ x - r .. floor $ x + r + 1] , b <- map fromIntegral [floor $ y - r .. floor $ y + r + 1] , c <- map fromIntegral [floor $ z - r .. floor $ z + r + 1] , inside a b c] where inside x0 y0 z0 = (x - x0) ^ 2 + (y - y0) ^ 2 + (z - z0) ^ 2 <= r ^ 2