ScalaでFizz Buzz
そのいち。一番素直に見える。
object FizzBuzz1{ def main(args:Array[String]):Unit={ 1 to 50 map (n => n match {case n if (n % 5 == 0 && n % 3 ==0) => "fizzbuzz" case n if (n % 3 == 0) => "fizz" case n if (n % 5 == 0) => "buzz" case n => n}) foreach {println} } }
そのに。手続き型伝統的。
object FizzBuzz2{ def main(args:Array[String]):Unit={ for (i<-1 to 50){ if(i % 3 == 0 && i % 5 == 0){println("fizzbuzz")} else if(i % 5 ==0){println("buzz")} else if(i % 3 ==0){println("fizz")} else{println(i)} } } }
そのさん。再帰。
object FizzBuzz3{ def main(args:Array[String]):Unit={ val result = fizzbuzz(1,50,List()).reverse result foreach {println} } def fizzbuzz(n:Int,max:Int,list:List[Any]):List[Any]={ val v = (n match { case n if (n % 3 == 0 && n % 5 == 0) => "fizzbuzz" case n if (n % 3 == 0) => "fizz" case n if (n % 5 == 0) => "buzz" case n => n}) :: list if (n == max) v else fizzbuzz(n +1,max, v) } }
参考:
FizzBuzz - SumiTomohikoの日記
2008-01-12 - ryugateの日記
Symfoware ScalaでFizzBuzz