假设在超市的自助结账处有一个队列。我正在尝试编写一个函数来计算所有顾客结账所需的总时间!
输入:
customers: 代表队列的正整数数组。每个整数都代表一个顾客,其值是他们需要结账的时间。
n: 正整数,结账台的数量。
输出:
函数应返回一个整数,即所需的总时间。示例:
例如,对于测试:
输入:
customers: 代表队列的正整数数组。每个整数都代表一个顾客,其值是他们需要结账的时间。
n: 正整数,结账台的数量。
输出:
函数应返回一个整数,即所需的总时间。示例:
queue_time([5,3,4], 1)
# should return 12
# because when n=1, the total time is just the sum of the times
queue_time([10,2,3,3], 2)
# should return 10
# because here n=2 and the 2nd, 3rd, and 4th people in the
# queue finish before the 1st person has finished.
queue_time([2,3,10], 2)
# should return 12
只有一个队列为多个收银机提供服务,而队列的顺序永远不会改变。队列中前面的人(数组/列表中的第一个元素)会在收银机空闲时立即前往收银机。我尝试过这样做,但它不能正确地工作,我不确定如何使下一个人在收银机可用时进入收银机。
def queue_time(customers, n)
if customers == []
n=0
else
x= customers.reduce(:+) / n
if x < customers.max
customers.max
else
x
end
end
end
例如,对于测试:
customers = [751, 304, 2, 629, 36, 674, 1]
n = 2
expected: 1461, instead got: 1198
谢谢 :-)
customers.each do |customer|; till_assigned = tills.each_with_index.min_by(&:first).last; tills[till_assigned] += customer; end; tills.max
。 - Cary Swoveland