チャー研

「謎のプログラマ」的な。

☆「泉君、たなびたいことがあるんだ、ちょっと。」
☆「一度でいいから、君のプログラムを。」
研「どうして君が?」
☆「あこがれているんだ。関数型言語に。」


☆「さぁ、早くプログラムを見せてくれ。」
☆「一回きり見せてくれれば、それで僕は満足するんだ。」
☆「お願いだから、ねね、いいだろう?」
☆「僕絶対喋らないよ。だから、ね、見せてくれるかい?」
研「うん、一回きりだからね。」

var i = 1
while (i <= 20) {
  if (i % 15 == 0) {
    println("FizzBuzz")
  } else if (i % 3 == 0) {
    println("Fizz")
  } else if (i % 5 == 0) {
    println("Buzz")
  } else {
    println(i)
  }
  i = i + 1
}

☆「馬鹿にしないでくれ。君のはもっとかっくがいいやつだ。」
研「☆君、関数型は見せ物でもないし、そんなむやみに使うことは許されないんDA」(キリッ


(中略)


研「お望みとあらば見せてやろう!」

1 to 20 map(x => (x % 3, x % 5) match {
  case (0, 0) => "FizzBuzz"
  case (0, _) => "Fizz"
  case (_, 0) => "Buzz"
  case _ => x toString
}) foreach println

参考:
alan dipert - FizzBuzz in Scala

  • 追記

無限リスト版。

val fizzbuzz = Stream from 1 map(x => (x % 3, x % 5) match {
  case (0, 0) => "FizzBuzz"
  case (0, _) => "Fizz"
  case (_, 0) => "Buzz"
  case _ => x toString
})
fizzbuzz take 20 foreach println