数値の配列xs
があり、その中の 3 つの連続するセクションの要素の合計を計算する必要があります。セクションは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