bra*_*boy 1 ruby sum multidimensional-array
我有一组二维数组.我想创建一个新的二维数组,它在2D数组中找到这些值的总和.
新数组的x,y之和= x时的和,arr1的y + x的总和,arr2的y ...
|1,2,4| |1,1,1| |1,1,1|
|2,4,6| |1,1,1| |1,1,1|
|2,4,6| |1,1,1| |1,1,1|
|2,4,6| |1,1,1| |1,1,1|
Run Code Online (Sandbox Code Playgroud)
现在添加上面的二维数组将导致,
|3,4,6|
|4,6,8|
|4,6,8|
|4,6,8|
Run Code Online (Sandbox Code Playgroud)
如何在Ruby中实现这一点(不是在任何其他语言中).我写了一个方法,但看起来很长很难看.
require 'matrix'
Matrix[
[1, 2, 4],
[2, 4, 6],
[2, 4, 6],
[2, 4, 6]
] +
Matrix[
[1, 1, 1],
[1, 1, 1],
[1, 1, 1],
[1, 1, 1]
] +
Matrix[
[1, 1, 1],
[1, 1, 1],
[1, 1, 1],
[1, 1, 1]
]
# => Matrix[[3, 4, 6], [4, 6, 8], [4, 6, 8], [4, 6, 8]]
Run Code Online (Sandbox Code Playgroud)
或者,如果你想要与@ Jeriko的答案相同的格式,即返回一个Array而不是Matrix:
def sum_arrays(*a)
return *a.map {|m| Matrix[*m] }.reduce(:+)
end
# data you supplied:
x = [[1, 2, 4], [2, 4, 6], [2, 4, 6], [2, 4, 6]]
y = [[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]]
z = [[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]]
p sum_arrays(x, y, z)
# => [[3, 4, 6], [4, 6, 8], [4, 6, 8], [4, 6, 8]]
Run Code Online (Sandbox Code Playgroud)