在 Python 中解决 CodingBat 拼砖难题

新手上路,请多包涵

我正在完成 这个 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 许可协议

阅读 466
1 个回答

这是一个较短的解决方案。

 def make_bricks(small, big, goal):
    return (goal%5)<=small and (goal-(big*5))<=small

原文由 Hassan Raza 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏