gpt4 book ai didi

ruby - 在 Ruby 中查找二维数组的总和

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:09 26 4
gpt4 key购买 nike

我有一个数组二维数组。我想创建一个新的二维数组,它在二维数组中找到这些值的总和。

新数组在 x,y 处的总和 = arr1 在 x,y 处的总和 + arr2 在 x,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|

现在将上面的二维数组相加会得到,

|3,4,6|
|4,6,8|
|4,6,8|
|4,6,8|

如何在 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]]

或者,如果您想要与@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]]

关于ruby - 在 Ruby 中查找二维数组的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3013968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com