2次元配列で表現した行列で列ごとの合計値を算出したい
(概念的には)以下のように、2次元配列で行列を表現したとします。
[ [1,2,3], [4,5,6] ..... [n-2,n-1,n] ]
これを
[(1+4+...+n-2), (2+5+...+n-1), (3+6+...+n)]
という具合に変換したいと思ってます。
ruby
でスマートにやるとしたらどういう方法がありますでしょうか?
何とか再帰を使って解いてみましたが、ここまでやらなくても解ける方法があったら教えてもらえると嬉しいです。
def aaa(arr)
if arr.size == 1
arr
elsif arr.size == 2
bbb(arr[0],arr[1])
else
bbb(arr[0], aaa(arr[1..-1]))
end
end
def bbb(arr1,arr2)
ret = Array.new(arr1.size, 0)
arr1.size.times{|n| ret[n] += arr1[n] + arr2[n]}
ret
end
実行例:
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
aaa(a)
=> [22, 26, 30]