ボーナスドリンク問題をやった人のプログラムを見ながらわからないところをアップした

  • このエントリーをはてなブックマークに追加
ruby

例によって問題はここから拝借。

で、ぐぐってみたらめちゃくちゃ丁寧に開設してくれているページがありました。

yucatioさんありがとうございます。
自分が受け取っていた問題の意味と全然違っていて、最初からつまづき気味。
3本飲んだケースごとに開設してくれているので理解しやすかったです。

で、リファクタリングしたコードではまだ理解できないので、最初のコードを参考にさせていただきました。

class BonusDrink
  def self.total_count_for(amount)
    return 0 if amount.zero?

    # case amount % 2
    # when 0
    #   3 * (amount - 2) / 2 + 2 # 偶数のとき
    # when 1
    #   3 * (amount - 1) / 2 + 1 # 奇数のとき
    # end

    if amount % 2 == 0
      3 * (amount - 2) / 2 + 2 # 偶数のとき
    elsif amount % 2 == 1
      3 * (amount - 1) / 2 + 1 # 奇数のとき
    end
  end
end

puts BonusDrink.total_count_for 100

今日の積み上げ

.zero?

自身がゼロのとき、trueを返す。
そうでないときはfalseを返す。

cace文

case # 対象のオブジェクトや式
when # 値1
 # 値1に一致する場合の処理
when # 値1
 # 値1に一致する場合の処理when # 値1
 # 値1に一致する場合の処理
else
 # どれにも一致しない場合の処理
end

参考にした解答はcase文だったので、if文でも書いてみた。

今日のまとめ

そもそも算数ができていない(^_^;)

おすすめテキスト

テストを書かれた伊藤さんのチェリー本で勉強しています。

SNSでもご購読できます。

コメントを残す

*