クジラの練習帳012(ボーナスドリンク問題)

練習帳012

f:id:whale_86:20201124020122j:plain

今回は、ネット上で拾った問題を実際に解きながら考えていきます。

問題

「ある駄菓子屋で飲み物を買うと、空き瓶3本で新しい飲み物を1本プレゼントしてくれる。最初に100本購入した場合、トータルで何本飲めるか」

 

購入した本数 飲める本数
0 0
1 1
3 4
11 16
100

(プログラムで算出する)

 解答

昨日あげた解答は間違いだったため、修正させていただきます。

f:id:whale_86:20201125230310p:plain

問題は、100本買ったときに33本のボーナスが貰え、この33本からまた11本ボーナスが貰え、更に..ってやっていくと飲み終わるときに飲んだ飲み物は何本かを求める必要があったようです💦

解説

まず、bonus_drinkメソッドで[買った本数(100)] と [count_bottle(貰える本数)]を足していきます。 全てのボーナスは下記で表す青字の値を合計し、49となり100 + 49で149となります。

今回のウエイトはcount_bottleメソッド(ボーナスで貰える本数)です。

 

count_bottleメソッドはボーナスで貰える本数を求めます。

今回は、ループするような形で作り、num(持っている本数)が3以下になるまで行い、全てを合計し

その時に持っている本数は[交換した本数(num / 3)と交換に余った本数(num % 3)]の合計を求める必要があります。

 

elseでcount_bottle(num / 3 + num % 3)の動き

100の場合、

f:id:whale_86:20201125234924p:plain

 

問題元↓

github.com

 

 

前回 クジラの練習帳011 - whale_86’s blog

次回 クジラの練習帳013 - whale_86’s blog