[Scala] FizzBuzz
object FizzBuzz { def fizzbuzz(n: int): List[String] = { def fizzbuzz_internal(n: int, l: List[String]): List[String] = { if (n == 0) { l } else { val s = if (n % 15 == 0) { "FizzBuzz" } else if (n % 3 == 0) { "Fizz" } else if (n % 5 == 0) { "Buzz" } else { n.toString() } fizzbuzz_internal(n - 1, s :: l); } } fizzbuzz_internal(n, List()); } def main(args: Array[String]): Unit = { Console.println(fizzbuzz(100)); } }
結果は、以下の通りです。
$ scalac FizzBuzz.scala $ scala FizzBuzz List(1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz,11,Fizz,13,14,FizzBuzz,16,17,Fizz,19,Buzz,Fizz,22,23,Fizz,Buzz,26,Fizz,28,29,FizzBuzz,31,32,Fizz,34,Buzz,Fizz,37,38,Fizz,Buzz,41,Fizz,43,44,FizzBuzz,46,47,Fizz,49,Buzz,Fizz,52,53,Fizz,Buzz,56,Fizz,58,59,FizzBuzz,61,62,Fizz,64,Buzz,Fizz,67,68,Fizz,Buzz,71,Fizz,73,74,FizzBuzz,76,77,Fizz,79,Buzz,Fizz,82,83,Fizz,Buzz,86,Fizz,88,89,FizzBuzz,91,92,Fizz,94,Buzz,Fizz,97,98,Fizz,Buzz)