python
1water1 = 100 2water2 = 150 3 4limit = 300 #水が入る容量 5 6count = 0 7judge1, judge2 = False, False 8 9l = [0] 10while 1: 11 if (l[count] + water1) <= 300: 12 l.append(l[count] + water1) 13 else: 14 judge1 = True 15 16 if (l[count] + water2) <= 300: 17 l.append(l[count] + water2) 18 else: 19 judge2 = True 20 21 if judge1 and judge2: 22 break 23 else: 24 count += 1 25 26del l[0] 27print(sorted(set(l)))
結果
[100, 150, 200, 250, 300]
上のコードは水が300[ml]入る容器にwater1[ml]とwater2[ml]を入れていき、水の容量をできるだけ細かく刻んで入れた場合の総数を求めるコードです。
例えば、最初は300[ml]の容量のコップは水が入っていないので、0[ml]です。次にwater1の容器で100[ml]コップに移すのでコップには100[ml]の水が入ります。これがパターン1です。
次に、コップを空にして、water2の容器で150[ml]の水をコップに入れるとコップの水は150mlになります。これがパターン2です。
パターン3はwater1の容器を使い100[ml]を2回注いで200[ml]にないます。これを300[ml]からこぼれないように繰り返した時、できるだけ多くのパターンをつくり、その時のコップの中身を出力します。
もっとスッキリまとまる気がするのですが、リファクタリングするとしたらどのようになるでしょうか?
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー