- 21 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 02:57:51.45 ID:oncvvJ9K.net]
- 剰余演算を全く使わないFizzBuzzがあったような…こうだっけ
import Data.List (zipWith3) import Data.Monoid data FizzBuzz = None | Fizz | Buzz | FizzBuzz | Number Int deriving (Eq, Show) instance Monoid FizzBuzz where mempty = error "something wrong" None `mappend` None = None None `mappend` Buzz = Buzz None `mappend` Number n = Number n Fizz `mappend` Buzz = FizzBuzz Fizz `mappend` _ = Fizz Buzz `mappend` _ = Buzz FizzBuzz `mappend` _ = FizzBuzz _ `mappend` _ = mempty toString :: FizzBuzz -> String toString (Number n) = show n toString fb = show fb lis = zipWith3 (\x y z -> x <> y <> z) (cycle [ None, None, Fizz ]) (cycle [ None, None, None, None, Buzz ]) [Number n | n <- [1..]] main = mapM_ (putStrLn . toString) $ take 100 lis
|

|