(概念的には)以下のように、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]