例によって問題はここから拝借。
で、ぐぐってみたらめちゃくちゃ丁寧に開設してくれているページがありました。
ボーナスドリンク問題の解答 - yucatio@システムエンジニア
こちらの記事を見てみて、面白そうな問題がいくつかあったので、プログラミング初心者ではないですが解きました。 blog.jnito.com ボーナスドリンク問題 「ある駄菓子屋で...
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文でも書いてみた。
今日のまとめ
そもそも算数ができていない(^_^;)
おすすめテキスト
テストを書かれた伊藤さんのチェリー本で勉強しています。