Haskellで普通にFizzBuzz
深い意味は無いです、そういえば書いたこと無かったなぁと思ったので・・・
module Main where fizzbuzz :: Integer -> String fizzbuzz x | x `mod` 15==0 = "FizzBuzz" | x `mod` 3==0 = "Fizz" | x `mod` 5==0 = "Buzz" | otherwise = show x main :: IO () main = putStrLn.show $ map fizzbuzz [1..100]
実行結果
$ runghc Main.hs ["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz","16","17","Fizz","19","Buzz","Fizz","22","23","Fizz","Buzz","26","Fizz","28","29","FizzBuzz","31","32","Fizz","34","Buzz","Fizz","37","38","Fizz","Buzz","41","Fizz","43","44","FizzBuzz","46","47","Fizz","49","Buzz","Fizz","52","53","Fizz","Buzz","56","Fizz","58","59","FizzBuzz","61","62","Fizz","64","Buzz","Fizz","67","68","Fizz","Buzz","71","Fizz","73","74","FizzBuzz","76","77","Fizz","79","Buzz","Fizz","82","83","Fizz","Buzz","86","Fizz","88","89","FizzBuzz","91","92","Fizz","94","Buzz","Fizz","97","98","Fizz","Buzz"]
一旦[String]にしてしまえば、あとはどうにでも調理できますね。例えば・・・
module Main where 〜略〜 main :: IO () main = putStrLn.strJoin $ map fizzbuzz [1..30] where strJoin lst = concat $ map (\s -> s ++ "\n") lst
実行結果
$ runghc Main.hs 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz
こんな感じで、簡単なコードを色々書いてみるのも大事かなぁと思います。