2012-05-12 45 views
0

我試圖解決一個「腐爛」難題,去有點像這樣的X號:如何測試,如果時間範圍具有圈

給的是100在DateTime.new(2012,5, 10,0,0,0),並且每12秒衰減0.5,它是否由DateTime.new(2012,5,10,0,8,0)衰減了20?

恰巧的是,這個問題的答案是 - 嗯,真:)

但對於

  • A爲1304.5673,
  • 衰減0.00000197每1.2毫秒
  • 並且結束時間不是一個而是2000 DateTime.new's

我試着

fd=3.minutes.ago.to_datetime 
td=Time.now 
material=1304.5673 
decay=0.00000197 
step=0.00012.seconds 
fd.step(td,step){ |n| material-=decay } 
puts material 

和處理時間是可以接受的 - 但如果我在時間步驟的任何進一步向後(如或許10.hours甚至2.hours;我的CPU散熱器開始建立動力,就像它正在推動整個Mac進入軌道:(

回答

0

我已經辛苦了這個問題很長一段時間 - 即使從問題到SO的回答時間確實表明相反< :)

(和答案,對我來說,明確地說明了爲什麼Ruby是這樣一個美妙的語言!)

# recap the variables in the question 
total_decay = ((td.to_time - fd.to_time).divmod(step))[0]* decay 
puts "new material: #{material - total_decay}" 

結果將可能無法通過科學的審查,但我與OK (現在);)

相關問題