我正在完成 这个 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` (我输入 true 是因为 (2\*5)+3=13 大于 9。
make_bricks(2, 1000000, 100003) → False make_bricks(1, 4, 12) → False
我找到了这个答案而不是通过了那些测试:
if goal > small + big * 5: return False else: return goal % 5 <= small
”`
我真的不明白为什么,有人可以解释一下吗?
原文由 Benjamin Bakhshi 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个较短的解决方案。