このCodingBat の問題を完了しています。
ゴール インチの長さのレンガの列を作りたいと考えています。小さなレンガ (それぞれ 1 インチ) と大きなレンガ (それぞれ 5 インチ) がいくつかあります。指定されたブロックから選択してゴールを作ることができる場合は True を返します。これは見た目よりも少し難しく、ループなしで実行できます。
make_bricks(3, 1, 8) → True make_bricks(3, 1, 9) → False make_bricks(3, 2, 10) → True
私が書いた:
if small + big * 5 >= goal: return True
else: return False
私のエラーは次のとおりです: make_bricks(3, 2, 9)
→ False
((2*5)+3=13 は 9 より大きいため、true とします。
make_bricks(2, 1000000, 100003) → False
make_bricks(1, 4, 12) → False
これらのテストに合格したよりも、この答えを見つけました:
if goal > small + big * 5:
return False
else:
return goal % 5 <= small
理由がよくわかりません、誰か説明してもらえますか?