BuzzFib
ナイーブ.ちょっと書き換えた.FibBuzzだとおもったら、BuzzFibというらしい。
module Main where import Data.List import System.Environment buzzfib :: [String] buzzfib = "FibBuzz" : unfoldr phi (1,1,1,tail $ cycle $ take 5 $"Buzz":repeat "") where phi (a,b,c,z:zs) | b == c = Just ("Fib" ++ z,(b,a+b,c+1,zs)) | otherwise = Just (z <+> show c,(a,b ,c+1,zs)) "" <+> s = s s <+> _ = s main :: IO () main = putStr . unlines . flip take buzzfib . read . head =<< getArgs
% buzzfib 40 FibBuzz Fib Fib Fib 4 FibBuzz 6 7 Fib 9 Buzz 11 12 Fib 14 Buzz 16 17 18 19 Buzz Fib 22 23 24 Buzz 26 27 28 29 Buzz 31 32 33 Fib Buzz 36 37 38 39