2009-11-18 6 views
3

Supposons que j'ai un tableau à deux dimensions A, et il est indiqué que quelque part à l'intérieur il y a un objet my_element. Quel est le moyen le plus rapide de trouver ses coordonnées? J'utilise Ruby 1.8.6.Ruby tableau à deux dimensions: trouver les coordonnées d'un objet

+2

Il n'y a vraiment qu'une seule façon: faire une boucle dans tous les emplacements jusqu'à ce que vous trouviez ce que vous cherchez (voir la réponse de mtyaka). Dans le pire des cas, c'est 'O (m * n)' où 'm' et' n' sont le nombre de lignes et de colonnes dans votre tableau. –

Répondre

6

Ceci est un moyen. Cependant, je ne suis pas sûr que ce soit le plus rapide.

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

Implentation élégante de la méthode des coordonnées mais je ne l'ajouterais pas dans la classe Array car elle ne s'applique pas vraiment à tous les tableaux. Similaire à l'argument de savoir si une méthode "sum" doit être ajoutée à Array. – mikej

+0

@mikej Yup, totalement d'accord. Je l'ai ajouté dans la classe Array à des fins de démonstration uniquement. – mtyaka

+0

Eh bien, comme je le pensais. Quoi qu'il en soit, merci! – gmile

Questions connexes