2013-10-22 4 views
0

행렬에서 계란의 특정 위치 지정. 목표 행, 열 및 대각선의 모든 달걀을 합산해야합니다.루비 (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 

나는 그렇게 해왔다. 그것을 할 수있는 더 나은 루비 방법이 있습니까? main.rb

carton.rb

는 시간 내 주셔서 감사합니다. 는 행렬 열의 배열이 있다면

+0

를 오류가 '@의 carton' 또는'@carton [Y] 중 어느 하나가'에 의해 정의되지 않은 'nil'이 때문이다 질문에 넣은 코드. 제 3 자 페이지가 아닌 관련 코드를 여기에 붙여 넣으십시오 (질문에). – pduersteler

+0

"모든 대각선"이란 무엇을 의미합니까? 이것을 설명해 주시겠습니까? –

답변

1

할 수있다 :

require 'matrix' 
Matrix.columns(array_of_columns).trace 
관련 문제