次世代言語議論スレ【Go Rust Haskell Scala Erlang Elixir】 第二世代at TECH
次世代言語議論スレ【Go Rust Haskell Scala Erlang Elixir】 第二世代 - 暇つぶし2ch21:デフォルトの名無しさん
17/02/12 02:57:51.45 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


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch