0

マトリックス内の卵の特定の位置を与える。ターゲットの行、列、および対角線のすべての卵を合計する必要があります。

  • 卵 -> 1
  • 空 -> 0

私は、パラメーターとして卵の位置を渡すegg_performanceというメソッドを実行しました。この方法では、行、列、およびすべての対角線を計算します。行と列に問題はありません。対角線を合計するとき、このコードを使用しました (これは、現在の卵を基準として第 2 象限のみを対象としています)。

# 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

私はそれをした方法が好きではありません。それを行うためのより良いルビーの方法はありますか?

carton.rb main.rb

お時間をいただきありがとうございます。

4

1 に答える 1

1

マトリックス列の配列がある場合は、次のことができます。

require 'matrix'
Matrix.columns(array_of_columns).trace
于 2013-10-22T11:11:13.053 に答える