我有一个不确定行和&的方阵。列长度(假设行和列等于正方形)。
我绘制了一个示例矩阵如下:
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
我的目标是从对角线值的左上角到右下角得到一个总和。
显然在这个例子中,这就是我所需要的:
diagsum = matrix[0][0]+matrix[1][1]+matrix[2][2]
#=> 15
我看到每个行的增量为+1的模式&矩阵中的列参数,所以为我的不确定长度矩阵开发的代码(作为我的方法diagsum
的参数提供)最好需要在我的矩阵参数上实现某种row_count方法。
答案 0 :(得分:3)
如果
arr = [[1,2,3],
[4,5,6],
[7,8,9]]
然后:
require 'matrix'
Matrix[*arr].trace
#=> 15
答案 1 :(得分:1)
这将对角线值求和。
matrix = []
matrix[0] = [1,2,3]
matrix[1] = [4,5,6]
matrix[2] = [7,8,9]
def diagsum(mat)
sum = 0
mat.each_with_index { |row,i| sum += row[i] }
sum
end
puts (diagsum matrix) # 15
答案 2 :(得分:0)
x
是什么。0..x
,而索引仅上升到x - 1
。您应该将其更改为0...x
。i
,其范围仅在块中。i
一次,可能意图与行或列对应,但不能同时使用两者。each
将返回接收器,无论你在块中得到什么。puts
都会返回nil
。