我有两个(或更多)数组,每个数组有12个整数(对应于每个月的值).我想要的就是将它们加在一起,这样我就可以得到一个单独的数组,每个月都有总和值.这是一个有三个值的例子:[1,2,3]和[4,5,6] => [5,7,9]
我能想到的最好的是:
[[1,2,3],[4,5,6]].transpose.map{|arr| arr.inject{|sum, element| sum+element}} #=> [5,7,9]
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?这似乎是一件非常基本的事情.
在ruby中,给定两个日期范围,我想要表示两个日期范围的交集的范围,或者如果没有交叉则为零.例如:
(Date.new(2011,1,1)..Date.new(2011,1,15)) & (Date.new(2011,1,10)..Date.new(2011,2,15))
=> Mon, 10 Jan 2011..Sat, 15 Jan 2011
Run Code Online (Sandbox Code Playgroud)
编辑:应该说我希望它也适用于DateTime,所以间隔可以缩短到分钟和秒:
(DateTime.new(2011,1,1,22,45)..Date.new(2011,2,15)) & (Date.new(2011,1,1)..Date.new(2011,2,15))
=> Sat, 01 Jan 2011 22:45:00 +0000..Tue, 15 Feb 2011
Run Code Online (Sandbox Code Playgroud)