LoginSignup
0
1

More than 5 years have passed since last update.

ScalaでFizzBuzz

Posted at

ScalaでFizzBuzz書いてみた。

ifのみで単純にやってみる

def fizzBuzz(num: Int): String = {
  if (num % 3 == 0 && num % 5 == 0) {
    "FizzBuzz"
  } else if (num % 3 == 0) {
    "Fizz"
  } else if (num % 5 == 0) {
    "Buzz"
  } else {
    num.toString
  }
}

単純に書くとFizzBuzzと1つずつのケースを別個の分岐に書かないといけないので若干無駄。

StringBuilder使って分岐を減らしてみる

def fizzBuzz(num: Int): String = {
  val sb = new StringBuilder
  if (num % 3 == 0){
    sb.append("Fizz")
  }
  if (num % 5 == 0){
    sb.append("Buzz")
  }
  if (sb.isEmpty) num.toString else sb.result
}

同じチェックを何度もしなくていいんで割と綺麗に書けた。

パターンマッチでやってみる

def fizzBuzz(num: Int): String = {
  (num % 3, num % 5) match {
    case (0, 0) => "FizzBuzz"
    case (0, _) => "Fizz"
    case (_, 0) => "Buzz"
    case _ => num.toString
  }
}

パターンマッチが綺麗にかけているような気がするものの直感的ではない。
もう少しワンライナー的な書き方ができないものか。

こちらにも投稿
http://melvins-nest.com/dev/2017/01/08/scalaでfizzbuzz/

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1