2009-11-18 6 views
3

2 차원 배열이 A이고, 그 안에 어딘가에 객체 my_element이 있다고 가정합니다. 좌표를 찾는 가장 빠른 방법은 무엇입니까? Ruby 1.8.6을 사용하고 있습니다.루비 2 차원 배열 : 객체 좌표 찾기

+2

정말로 한가지 방법이 있습니다 : 원하는 슬롯을 찾을 때까지 모든 슬롯을 반복하십시오 (mtyaka의 대답 참조). 최악의 경우, 이것은'O (m * n)'입니다. 여기서'm'과'n'은 배열의 행과 열의 수입니다. –

답변

6

이것은 한 가지 방법입니다. 나는 그것이 가장 빠르다고 확신하지 못한다.

class Array 
    def coordinates(element) 
    each_with_index do |subarray, i| 
     j = subarray.index(element) 
     return i, j if j 
    end 
    nil 
    end 
end 


array = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] 
array.coordinates(3)  # => [0, 2] 
array.coordinates(9)  # => [2, 2] 
array.coordinates(42) # => nil 
+0

좌표 메서드를 우아하게 함축하지만 모든 배열에 실제로 적용되지 않기 때문에 Array 클래스에 추가하지 않을 것입니다. Array에 "sum"메서드를 추가해야하는지 여부와 관련된 인수와 유사합니다. – mikej

+0

@mikej 그래, 전적으로 동의합니다. 데모 용으로 Array 클래스에 추가했습니다. – mtyaka

+0

글쎄, 내가 생각한대로. 어쨌든 감사합니다! – gmile