&引用;“买车”;Ruby代码战争

&引用;“买车”;Ruby代码战争,ruby,Ruby,我正在尝试做Ruby codewars挑战,我被卡住了,因为我通过了样本测试,但无法通过最后一个测试。我得到的是预期错误:[8597],而不是:[8563] 说明: 一个人有一辆相当旧的汽车,价值2000美元。他看见一辆二手车 价值8000美元。他想保留他的旧车,直到买得起那辆车为止 二手的 他认为他每个月可以节省1000美元,但他的旧车价格 而新一轮的降幅为每月1.5%。此外 在每个月底,损失百分比增加0.5% 两个月 每月损失百分比示例: 例如,如果在第一个月结束时,损失百分比为1, 第二个

我正在尝试做Ruby codewars挑战,我被卡住了,因为我通过了样本测试,但无法通过最后一个测试。我得到的是预期错误:[8597],而不是:[8563]

说明:

一个人有一辆相当旧的汽车,价值2000美元。他看见一辆二手车 价值8000美元。他想保留他的旧车,直到买得起那辆车为止 二手的

他认为他每个月可以节省1000美元,但他的旧车价格 而新一轮的降幅为每月1.5%。此外 在每个月底,损失百分比增加0.5% 两个月

每月损失百分比示例:

例如,如果在第一个月结束时,损失百分比为1, 第二个月底的损失百分比为1.5,第三个月底仍然如此 1.5,第4个月结束2等

你能帮助他吗?我们的人觉得很难做到这一切 计算

他要花多少个月才能攒够钱买房子 他想要一辆车,他还剩下多少钱

我不想看解决方案,这里我也不需要,只要朝着正确的方向轻推一下就很有帮助了

另外,我知道代码在很多方面可能是次优的,但我已经在两周前开始编码了,所以我尽我所能做到最好


Tnx伙计们,你们的算法很好。但您有两个编码错误:

1)
percentLossByMonth
在除以100(5/100=0,而(5.to_f)/100=0.05)之前需要将其转换为float

2) 说明中说,您需要返回最接近的剩余整数,即
leftover.round

def nbMonths(startPriceOld, startPriceNew, savingperMonth, percentLossByMonth)
  months = 0
  leftover = 0
  currentSavings = 0
  until (currentSavings + startPriceOld) >= (startPriceNew)
    months += 1
    percentLossByMonth += months.even? ? 0.5 : 0    
    startPriceNew = startPriceNew * (1 - (percentLossByMonth.to_f/100))
    startPriceOld = startPriceOld * (1 - (percentLossByMonth.to_f/100))
    currentSavings += savingperMonth
  end
  leftover = currentSavings + startPriceOld - startPriceNew
  return [months, leftover.round]
end

您的代码的问题已经确定,因此我将提供一个替代计算

r = 0.015
net_cost = 8000-2000
n = 1
months, left_over = loop do
  r += 0.005 if n.even?
  net_cost *= (1-r)
  tot = n*1000 - net_cost
  puts "n=#{n}, r=#{r}, net_cost=#{net_cost.to_i}, " +
    "savings=#{(n*1000).to_i}, deficit=#{-tot.to_i}"
  break [n, tot] if tot >= 0
  n += 1
end
  #=> [6, 766.15...]
months
  #=> 6
left_over
  #=> 766.15...
和印刷品

n=1, r=0.015, net_cost=5910, savings=1000, deficit=4910
n=2, r=0.020, net_cost=5791, savings=2000, deficit=3791
n=3, r=0.020, net_cost=5675, savings=3000, deficit=2675
n=4, r=0.025, net_cost=5534, savings=4000, deficit=1534
n=5, r=0.025, net_cost=5395, savings=5000, deficit=395
n=6, r=0.030, net_cost=5233, savings=6000, deficit=-766

只是想知道,这个kata的url?
n=1, r=0.015, net_cost=5910, savings=1000, deficit=4910
n=2, r=0.020, net_cost=5791, savings=2000, deficit=3791
n=3, r=0.020, net_cost=5675, savings=3000, deficit=2675
n=4, r=0.025, net_cost=5534, savings=4000, deficit=1534
n=5, r=0.025, net_cost=5395, savings=5000, deficit=395
n=6, r=0.030, net_cost=5233, savings=6000, deficit=-766