Personal tools

Haskell Quiz/FizzBuzz/Solution Ninju

From HaskellWiki

< Haskell Quiz | FizzBuzz(Difference between revisions)
Jump to: navigation, search
Current revision (14:20, 8 July 2010) (edit) (undo)
(Moved my solution to its own page, following quiz convention.)
 
(One intermediate revision not shown.)
Line 1: Line 1:
[[Category:Haskell Quiz solutions|FizzBuzz]]
[[Category:Haskell Quiz solutions|FizzBuzz]]
-
I think this is probably what I'd do in the interview situation - i.e. the first and most obvious thing that comes to mind. (Alex Watt)
+
I think this is probably what I'd do in the interview situation - i.e. the first and most obvious thing that comes to mind.
<haskell>
<haskell>
Line 17: Line 17:
| n `mod` 3 == 0 = "Buzz"
| n `mod` 3 == 0 = "Buzz"
| otherwise = show n
| otherwise = show n
-
</haskell>
 
-
 
-
An alternate solution:
 
-
 
-
<haskell>
 
-
module Main where
 
-
 
-
main :: IO ()
 
-
main = mapM_ putStrLn $ zipWith3 join (loop 3 "Fizz") (loop 5 "Buzz") [1..100]
 
-
where
 
-
loop n s = cycle $ replicate (n-1) [] ++ [s]
 
-
join s t n = head $ filter (not . null) [s ++ t, show (n :: Int)]
 
</haskell>
</haskell>

Current revision


I think this is probably what I'd do in the interview situation - i.e. the first and most obvious thing that comes to mind.

module Main where
 
main :: IO ()
main = printAll $ map fizzBuzz [1..100]
       where
       printAll [] = return ()
       printAll (x:xs) = putStrLn x >> printAll xs
 
fizzBuzz :: Integer -> String
fizzBuzz n | n `mod` 15 == 0 = "FizzBuzz"
           | n `mod` 5  == 0 = "Fizz"
           | n `mod` 3  == 0 = "Buzz"
           | otherwise       = show n