🤔

【初心者】FizzBuzzのいろんなコードパターンを考える

2023/05/04に公開

こんにちは!現在エンジニアを目指して勉強している猿です!
勉強するものが絶対通るであろうFizzBuzzのプログラミングコード
今回ははどれだけいろんなパターンで書けるか挑戦してみました!

まず一つ目

おそらく一番オーソドックスではないかと思われるifを使ってかいてみました

numbers = [*1..20]
numbers.each do |number|
    if number % 15 == 0
        puts "FizzBuzz"
    elsif number % 5 == 0
        puts "Buzz"
    elsif number % 3 == 0
        puts "Fizz"
    else
        puts number
    end
end

2つ目

moduloメソッドとcaseを使って書いてみました

numbers = [*1..20]
numbers.each do |number|
    case 
    when number.modulo(15) == 0
        puts "FizzBuzz"
    when number.modulo(5) == 0
        puts "Buzz"
    when number.modulo(3) == 0
        puts "Fizz"
    else
        puts number
    end
end

どれだけ思いつくか挑戦してみたものの、上の二つって考え方ていっしょよな〜と。。。
私の力では限界を感じたため、現役エンジニアの方になにか別の書き方ってないですか??ときいてみました。
ここで返ってきたコードがこちら

3つ目

numbers = [*1..20]
numbers.each do |number|
    msg = ""
    msg += "Fizz" if (number % 3).zero?
    msg += "Buzz" if (number % 5).zero?
    msg = number if msg.empty?
    puts msg
end

うっわーーーーーー!!!!空の変数に、判定が通った時に文字いれていくのすごすぎる。。スマートすぎてびびりました。ぜひ名前ここでかいていいですかってきいたのですが、お恥ずかしいとのことでした。回答してくださり、ありがとうございます。

同じ結果でも、いろんな過程があっておもしろいな〜〜と思えたFizzBuzz問題でした

Discussion