我有一个数字数组xs
,我需要计算其中三个连续部分的元素总和。这些部分是xs[0]
,xs[1, N]
并且xs[N + 1, N]
对于一些整数N
。例如,对于N = 2
:
[1, 2, 3, 4, 5] #=> 1, 5, 9
我的实现如下。我无法提高内存/速度效率,但它仍然困扰着我,我想我现在无事可做,但也许有更优雅和简洁的方法来做到这一点?我不必产生一个数组,它可以是任何其他结构。
xs.each_with_index.reduce([0, 0, 0]) do |m, x|
v, i = x
j = (i > N ? 2
: i > 0 ? 1
: 0)
m[j] += v.to_i
m
end