重複の可能性:
Ruby の累積配列合計
このような整数の配列があります
[20, 25, 40, 60]
各要素がその前の要素の累積値を表す配列に変換するにはどうすればよいですか?
[20, 45, 85, 145]
Rails 3.2.0 と Ruby 1.9.3 を使用しています
重複の可能性:
Ruby の累積配列合計
このような整数の配列があります
[20, 25, 40, 60]
各要素がその前の要素の累積値を表す配列に変換するにはどうすればよいですか?
[20, 45, 85, 145]
Rails 3.2.0 と Ruby 1.9.3 を使用しています
s = 0
[20, 25, 40, 60].map{|e| s += e}
[20, 25, 40, 60].reduce([]) do |arr, v|
arr << (arr.last || 0) + v
end
または醜いワンライナー。
[20, 25, 40, 60].reduce([0]){ |a, v| a << a[-1] + v }[1..-1]
array = [20, 25, 40, 60]
(array.size - 1).times { |i| array[i + 1] += array[i] }
puts array
# => [20, 45, 85, 145]
arr.each_with_index.map{|x, i| x + (i==0 ? 0 : arr[0..i-1].inject(:+))}
=> [20, 45, 85, 145]
arr = [20, 25, 40, 60]
first = []
sum = 0
arr.each do |e|
sum += e
first << sum
end
puts first
B = cumsum(A)
class Array
def ruby_cumsum!
(1..size-1).each {|i| self[i] += self[i-1] }
self
end
end