Ruby: 2 つ以上の配列の対応するメンバーを合計します。
概要
それぞれに 12 個の整数 (各月の値に対応) を含む 2 つ (またはそれ以上) の配列があります。私が望むのは、それらを合計して、各月の合計値を含む単一の配列を取得することだけです。 3 つの値を含む例を次に示します。 [1,2,3] および [4,5,6] => [5,7,9]
私が思いついた最高のものは次のとおりです。
[[1,2,3],[4,5,6]].transpose.map{|arr| arr.inject{|sum, element| sum+element}} #=> [5,7,9]
これを行うより良い方法はありますか?それはやりたいことのような基本的なことのようです。
解決策
Anurag が提案した転置バージョンは次のとおりです。
[[1,2,3], [4,5,6]].transpose.map {|x| x.reduce(:+)}
これは、任意の数のコンポーネント配列で機能します。 reduce と inject は同義語ですが、ここでは、reduce の方がコードの意図をより明確に伝えているように思えます…