python - 如何在 Python 中的简单 Compsci 101 APT 中修复我的代码
问题描述
这是我们遇到的问题:
问题陈述
你是煎饼店的临时厨师,所以你需要尽快做煎饼。你有一个平底锅,一次可以装下大容量的薄煎饼。使用这个锅你必须煮 numCakes 煎饼。每个薄煎饼的每一面都必须煮五分钟,一旦薄煎饼开始在一边煮,它必须在那一边煮五分钟。但是,您可以在五分钟后准备好翻转煎饼时将其从锅中取出,稍后将其放回锅中以在另一面煎。编写方法 minutesNeeded,它返回在一次可容纳容量煎饼的平底锅中烹制 numCakes 煎饼所需的最短时间。请参阅示例。
def minutesNeeded(numCakes,容量):
我尝试了各种方法,并且在大多数情况下都可以使用它,但是它并不总是有效,因为我不知道如何考虑有时您必须脱掉一个,从侧面开始另一个煎饼,然后放一个回来完成。
def minutesNeeded (numCakes, capacity):
#set some variables
above = numCakes - capacity
below = numCakes - above
if numCakes <= capacity:
time = numCakes * 10 / capacity
return(int(time))
else:
time = below * 10 / capacity + above * 5
return (int(time))
让我添加一个例子:
import math
def minutesNeeded(numCakes, capacity):
return (math.ceil(numCakes / capacity)) * 10
这是一个例子:预期 15 得到 20 : 3 2。它不起作用,因为在这种情况下你应该做的是把两个煎饼放在上面五分钟(烹饪那些面),然后取下煎饼并开始第三次烹饪第三次和第一次再持续五分钟。现在你有一个煮熟的煎饼和两个半熟的煎饼。所以你把那两个半熟的煎饼再吃五分钟。你总共花了 15 分钟做了三个煎饼,但没用 20 分钟。
解决方案
该问题没有具体说明倒面糊、翻转煎饼或取出煎饼所需的时间,因此为简单起见,我们假设这些操作花费的时间为零。那么我们知道什么?
- 一批煎饼需要的时间是10分钟(每面5分钟)
- 最后一批,不管锅是否满载,仍然需要 10 分钟
所以我们需要做的是取numCakes
并除以capacity
确定需要的批次数,四舍五入使其成为偶数批次。然后将批次数乘以 10 分钟:
import math
def minutesNeeded(numCakes, capacity):
return (math.ceil(numCakes / capacity)) * 10
编辑
在被告知有一个窍门后,我仔细看了看。我相信我想出了一个有效的公式(也不再需要math
模块)。查看“需要 3,容量 2”的示例,我制定了一种算法,该算法可以提供正确的响应,同时还可以使用其他组合。
def minutesNeeded(numCakes, capacity):
if numCakes == 0:
return 0
if numCakes <= capacity:
return 10
return int( ((numCakes * 2) + (capacity - 1)) / capacity ) * 5
推荐阅读
- java - Spring Data Rest:摘录为封闭投影
- html - 如何让我的 CSS Grid 布局响应式?
- c# - 在模拟另一个用户时请求 Kerberos 票证时,安全包中没有凭据
- r - ifelse 测试选择一个值而不是两个
- jquery - 在数据库中插入选中的复选框值并在未选中时将其删除
- angular - 茉莉花测试中是否可以获取模板引用变量?
- windows - 在 awk 中转义嵌套的双引号
- gradle - Gradle 多项目不会产生 Lombok 的优点
- java - 模拟不返回任何内容的强制转换对象时出现 ClassCastException
- python - Python Pandas if/else Statement