我必须构建一个程序来计算电话提供商使用的年度分钟费用,这取决于不同的费率。
例如,一个电话运营商可能有以下费率:
"rates": [
{"price": 15.5, "threshold": 150},
{"price": 12.3, "threshold": 100},
{"price": 8}
],
运营商可以有多种资费,最后一种资费始终没有阈值。
因此,在上面的示例中,前 150 分钟将按每分钟 15.5 便士计费,接下来的 100 分钟将按每分钟 12.3 便士计费,所有后续分钟将按每分钟 8 便士计费。
因此如果:
AnnualUsage = 1000
总成本为 95.55。
我正在努力想象一种方法,该方法可以适应运营商可能拥有的多种资费,并根据阈值将一个值乘以不同的价格。
请帮忙!
最佳答案
只是另一种选择,我认为这是不言自明的:
rates = [
{price: 15.5, threshold: 150},
{price: 12.3, threshold: 100},
{price: 8}
]
annual_usage = 1000
res = rates.each_with_object([]) do |h, ary|
if h.has_key?(:threshold) && annual_usage > h[:threshold]
annual_usage -= h[:threshold]
ary << h[:threshold] * h[:price]/100
else
ary << annual_usage * h[:price]/100
end
end
res #=> [23.25, 12.3, 60]
res.sum #=> 95.55
关于arrays - 根据阈值对整数应用不同的乘数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60019563/