Techioz Blog

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 の方がコードの意図をより明確に伝えているように思えます…