Haskell で FizzBuzz
夜中にこつこつ Haskell を勉強しています。
初めての Haskell プログラムは FizzBuzz に挑戦。
ついループで考えてしまう。
うぉ、超難しい。
fizzBuzz :: Int -> [String] -> [String] fizzBuzz 31 ss = ss fizzBuzz n ss = do if n `mod` 3 == 0 && n `mod` 5 == 0 then fizzBuzz (n + 1) ("FizzBuzz" : ss) else if n `mod` 3 == 0 then fizzBuzz (n + 1) ("Fizz" : ss) else if n `mod` 5 == 0 then fizzBuzz (n + 1) ("Buzz" : ss) else fizzBuzz (n + 1) (show n : ss) printList :: [String] -> IO () printList [] = putStr "\n" printList (s:ss) = do putStr (s ++ " ") printList ss main = printList $ reverse $ fizzBuzz 1 []
とりあえずできたのがこれ。
実はこれよりももっとできの悪い FizzBuzz があるんだけど、それはまたの機会にでも紹介します。