1

重複の可能性:
Ruby の累積配列合計

このような整数の配列があります

[20, 25, 40, 60]

各要素がその前の要素の累積値を表す配列に変換するにはどうすればよいですか?

[20, 45, 85, 145]

Rails 3.2.0 と Ruby 1.9.3 を使用しています

4

6 に答える 6

6
s = 0
[20, 25, 40, 60].map{|e| s += e}
于 2012-11-29T06:16:34.840 に答える
2
[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]
于 2012-11-29T06:14:06.770 に答える
1
array = [20, 25, 40, 60]
(array.size - 1).times { |i| array[i + 1] += array[i] }
puts array
# => [20, 45, 85, 145]
于 2012-11-29T06:14:22.527 に答える
0
arr.each_with_index.map{|x, i| x + (i==0 ? 0 : arr[0..i-1].inject(:+))}

=> [20, 45, 85, 145]
于 2012-11-29T06:16:50.113 に答える
0
arr = [20, 25, 40, 60]
first = []
sum = 0

arr.each do |e|
  sum += e
  first << sum
end
puts first
于 2012-11-29T06:19:24.913 に答える
0

マトラブ:

B = cumsum(A)

ルビー:

class Array
  def ruby_cumsum!
    (1..size-1).each {|i| self[i] += self[i-1] }
    self
  end
end
于 2012-11-29T06:15:02.420 に答える