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プログラムでは文字と数字の暗黙的な変換はないので気をつけましょう!
これだけは言いたい
清原さん、
私は少年時代、東京ドームでホームランを打つかっこいいあなたに憧れ、いつか清原さんのような凄いバッターになりたいと思って、たくさん素振りをしました。
小学校も、中学校も、高校もずっと好きでした。
そして今でも好きなんです。
色々ありましたが、またいつかTVに出てきてください。
讃岐小僧より
最後に
この記事はプロを目指す人のためのRuby入門から学んだことを参考にして内容が作られています。
Rubyを本格的に勉強したいと考えられている方は是非、下記リンクに書籍のリンクを貼っているので確認してみてください。