Arrays 在多维数组中求和所有值的Ruby方法
我试图对数组的元素求和。不使用展平。我已尝试使用以下方法:Arrays 在多维数组中求和所有值的Ruby方法,arrays,ruby,Arrays,Ruby,我试图对数组的元素求和。不使用展平。我已尝试使用以下方法: def multi_array_sum(arr) sum = 0 arr.each do |row| row.each do |column| sum += column end end return sum end 但不幸的是,它不起作用。考虑到数组中的第一个元素不是另一个数组本身,我不能使用每个,例如,数组=[[1,1,2],[3,4,5],如果所有元素都是数字或数组,并且您希望将它们全
def multi_array_sum(arr)
sum = 0
arr.each do |row|
row.each do |column|
sum += column
end
end
return sum
end
但不幸的是,它不起作用。考虑到数组中的第一个元素不是另一个数组本身,我不能使用
每个,例如,数组=[[1,1,2],[3,4,5]
,如果所有元素都是数字或数组,并且您希望将它们全部相加,我不知道如何遍历多维数组:
array.flatten.inject(:+)
只需使用标准数组函数,然后就可以枚举了
array.flatten.reduce(:+)
因此,如果您绝对不能使用扁平化(这有点奇怪),您可以使用一个简单的递归方法:
def multi_array_sum(arr)
case arr
when Fixnum
arr
when Array
arr.reduce(0) { |agg, sub_arr| agg + multi_array_sum(sub_arr) }
end
end
如果您100%确定无法使用展平
,则可以使用:
array.map { |a| a.reduce(:+) }.reduce(:+)
如果每个内部数组大小相同且仅包含数字,则可以使用该方法将数组转换为矩阵(不带块),以创建枚举器来生成矩阵的元素,并(akainject
)计算矩阵所有元素的和
require 'matrix'
def sum_all(arr)
Matrix[*arr].each.reduce(:+)
end
sum_all [[1,2],[3,4]] #=> 10
在什么意义上array=[[1[1,2],[3,4,5]
nxn数组?这里n
的值是多少?您的数组无效