Drkcore

29 12 2009 Haskell Tweet

「Haskell初心者脳」の謎に迫る FizzBuzz

「Lisp脳」の謎に迫る - Schemeプログラマの発想をみて、Haskellだったらどう書くかを考えてみた。

基本はFizzBuzzの無限リストを生成してtakeすればよかろうと。

  • FizzとBuzzは一定周期で現れるのでcycleで無限リストをつくる
  • 二つを混ぜあわせた無限リストをつくる(zipWith)
  • 空いてるところに数列を埋め込む

出来たのがこれ。

fizzbuzz = fizzbuzz' [1..] fbz
    where
      fizzbuzz' (x:xs) (y:ys) | y == ""   = (show x):(fizzbuzz' xs ys)
                              | otherwise = y:(fizzbuzz' xs ys)
      fbz = zipWith (++) (cycle ["","","Fizz"]) (cycle["","","","","Buzz"])

あとは好きなだけtakeする

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021