2017-01-04 3 views
0

2 차원 배열 = [[12,34,35,21],[10,14,23,17],...] 무한대입니다.2 차원 배열 합계 방법

나는 이것을 루비에서하고 싶다;

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)

arr1 = [[12+10+..],[34+14+..],[35+23..],[21+17+..]] 

어떤 생각?

+0

희망이 도움? – Stefan

+0

2x4가 아니지만 16x4 또는 24x4 ...... 무한대 * 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

방금 ​​루비 코드 0을 작성했습니다.

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]} 
는 "무한대"는 무엇을 의미 하는가가