Haskell Quiz/FizzBuzz/Solution Ninju: Difference between revisions

From HaskellWiki
No edit summary
m (Reverted edits by Tomjaguarpaw (talk) to last revision by Syzygies)
 
(5 intermediate revisions by 2 users 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 = do
  mapM_ putStrLn $ zipWith xor fizzbuzz $ map show [1..100 :: Int]
  where
    loop n s = cycle $ replicate (n-1) "" ++ [s]
    fizzbuzz = zipWith (++) (loop 3 "Fizz") (loop 5 "Buzz")
    xor s t = if null s then t else s
</haskell>
</haskell>

Latest revision as of 15:19, 6 February 2021


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