讃岐小僧のEngineering×Techメモ

未経験から挑戦中のプログラミングや、趣味の野球や狩猟について、その他、ビジネスやテクノロジーをテーマに様々なことをつぶやく場所です。

【Ruby】Fizz_Buzzを書いてみる

Fizz_Buzzの仕様

  • 3で割り切れる数値を引数に渡すと”Fizz”を返す
  • 5で割り切れる数値を引数に渡すと”Buzz”を返す
  • 15で割り切れ数値を引数に渡すと"Fizz_Buzz"を返す
  • それ以外の数値はその数値を文字列に変えて返す

なんですが、、、

面白くないので変えます。

だってみなさん書いた事あるでしょ。

ていう事で改めまして

今回の仕様

  • 3で割り切れる数値を引数に渡すとばかやろうを返す
  • 5で割り切れる数値を引数に渡すと清原を返す
  • 15で割り切れ数値を引数に渡すと"清原のばかやろう"を返す
  • それ以外の数値はそれでも好きです × その数字を返します

すべってるかもしれないがそれで行くぞぉ〜!

では実装にレッツゴー。

できたコード

def kiyohara(n)
  if n % 3 == 0 && n % 5 == 0
    '清原のばかやろう'

  elsif n % 3 == 0
    'ばかやろう'

  elsif n % 5 == 0
    '清原'

  else
    "それでも好きです × #{n}"
  end
end

puts "好きな数字を入力してください"
number = gets.to_i

puts kiyohara(number)

【ポイント】条件式の順番に気をつける

今回は3,5,15で割り切れる場合、、というのが条件でしたので下記のような感じでやればいいじゃんってなると考えたのではないでしょうか。。

if n % 3 == 0 
 hogehoge

elsif n % 5 
 fugafuga

elsif n % 15
 hogefuga
..........................................

end

もしそのような実装をした場合は思うように答えが帰ってこなくなります。

なぜかというと、if文では最初に真になった条件の際の処理が走るからです。

なので先ほどのような流れで実装した場合、15で割り切れる数字の場合でも3で割り切れる時の処理、つまり”ばかやろう”が返ってきてしまいます。

【ポイント】文字連結は式展開だとデフォルトでto_sされる

こちらの内容は下記の記事でも書かせていただきました。
本来ならRubyプログラムでは文字と数字の暗黙的な変換はないので気をつけましょう!

www.sanuki-kozo.com

これだけは言いたい

清原さん、
私は少年時代、東京ドームでホームランを打つかっこいいあなたに憧れ、いつか清原さんのような凄いバッターになりたいと思って、たくさん素振りをしました。

小学校も、中学校も、高校もずっと好きでした。

そして今でも好きなんです。

色々ありましたが、またいつかTVに出てきてください。

讃岐小僧より

最後に

この記事はプロを目指す人のためのRuby入門から学んだことを参考にして内容が作られています。

Rubyを本格的に勉強したいと考えられている方は是非、下記リンクに書籍のリンクを貼っているので確認してみてください。