我正在完成此 CodingBat问题:
我们要制作一排长为目标英寸的砖。我们有许多小砖(每个1英寸)和大砖(每个5英寸)。如果可以通过选择给定的砖块来达成目标,则返回True。这比看起来要难一点,并且可以完成而没有任何循环。
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
我的错误是:make_bricks(3, 2, 9)?False(我说真的是因为(2 * 5)+ 3 = 13大于9。
make_bricks(2, 1000000, 100003) ? False
make_bricks(1, 4, 12) ? False
Run Code Online (Sandbox Code Playgroud)
我找到了这个答案,却没有通过那些测试:
if goal > small + big * 5:
return False
else:
return goal % 5 <= small
Run Code Online (Sandbox Code Playgroud)
我真的不明白为什么,有人可以解释一下吗?
这是一个较短的解决方案。
def make_bricks(small, big, goal):
return (goal%5)<=small and (goal-(big*5))<=small
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10895 次 |
| 最近记录: |