可能重复:
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]
B = cumsum(A)
class Array
def ruby_cumsum!
(1..size-1).each {|i| self[i] += self[i-1] }
self
end
end
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