0

私は次のような「腐敗」パズルを解こうとしています。

与えられたAはDateTime.new(2012,5,10,0,0,0)で100であり、12秒ごとに0.5ずつ減衰し、DateTime.new(2012,5,10,0,8、 0)?

その質問への答えは-まあ、本当です:)

しかし、どうですか

  • 1304.5673であり、
  • 1.2ミリ秒ごとの減衰0.00000197
  • 終了時刻は1つではなく、2000DateTime.newです。

私はで試しました

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時間または2時間など、Mac全体を軌道に乗せようとしていたようにCPUクーラーが勢いを増し始めます:(

4

1 に答える 1

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}"

結果はおそらく科学的な精査に合格しないでしょうが、私はそれで大丈夫です(今のところ);)

于 2012-05-12T19:22:27.777 に答える