2017-01-04 31 views
0

我有一個二維數組= [[12,34,35,21],[10,14,23,17],...]無窮大。如何求和二維數組

我想在ruby中做到這一點;

arr1 = [array[0][0]+array[1][0]+array[n+1][0]..., 
array[0][1]+array[1][1]+array[n+1][1]..., 
array[0][2]+array[1][2]+array[n+1][2]..., 
array[0][3]+array[1][3]+array[n+1][3]...] 

結果(4×4)

​​

任何想法?

+0

什麼是 「無窮大」 是什麼意思? – Stefan

+0

它不是2x4,但它可以是16x4或24x4 ...... infinity * 4 – user7373737

回答

2

可以使用Array#transpose,然後如果使用紅寶石2.4以上總結每個單獨陣列

array = [[12,34,35,21],[10,14,23,17]] 

array.transpose.map {|a| a.inject(:+) } 
# => [22, 48, 58, 38] 

,可以使用Array#sum方法

array.transpose.map(&:sum) 
# => [22, 48, 58, 38] 

對於輸出是一個陣列或陣列,

array.transpose.map {|a| [a.sum] } 
# => [[22], [48], [58], [38]] 
+0

感謝Santhosh的迴應,但我的陣列是無限的,只有當您有2x4時纔有效 – user7373737

+1

這不僅適用於2x4它適用於相同大小的有限陣列陣列。 – Santhosh

+3

你的數組不是無限的。你不能在內存中存儲一​​個無限數組。簡單的原因是計算機的內存是有限的,你不能在有限的空間中存儲無限的非無窮小量。 http://av1611.com/kjbp/kjv-dictionary/infinite.html –

1

我剛剛寫了紅寶石代碼

h = Hash.new(0) 
arr = [[12, 34, 35, 21], [10, 14, 23, 17], [1, 2, 3]] #Any size of nested array 
arr.each do |a| 
    a.each_with_index do |n,i| 
    h[i]+=n 
    end 
end 
h.values.map{|a| [a]} 

希望它可以幫助