0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ScalaでFizzBuzz

0
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?