Ruby 对矩阵对角线值求和的最佳方法



给出一个鸡蛋在矩阵中的某个位置。我需要对目标行、列和对角线的所有鸡蛋求和。

  • 鸡蛋 -> 1
  • 空 -> 0

我做了一个叫做egg_performance的方法,我把鸡蛋的位置作为参数传递。在这种方法中,我计算行、列和所有对角线。我对行和列没有问题。当我对角线求和时,我使用了这一小部分代码(这仅适用于以当前鸡蛋为参考点的第二象限)。

# Second quadrant of the diagonals of the egg
x = egg_x - 1
y = egg_y - 1
while x >= 0 && x < egg_x || y >= 0 && y < egg_y
  performance += 1 if @carton[y][x] == 1
  x -= 1
  y -= 1
end 

当我执行这几段代码时,会出现一个错误。我认为这是一个越界错误,但我找不到它。

./carton.rb:73:in `egg_performance': undefined method `[]' for nil:NilClass (NoMethodError)
    from ./carton.rb:20:in `generate_random'
    from main.rb:5

不喜欢我这样做的方式。有没有更好的红宝石方法?

纸箱.rb主.rb

谢谢你的时间。

如果你有矩阵列数组,你可以做:

require 'matrix'
Matrix.columns(array_of_columns).trace

最新更新