0

Ruby 1.8.7

array = [[1.5,"cm"],[1.5,"cm"],[1.5,"m"]]

How to compare each array inside the variable array and see if it is equal, if equal then move on else if not equal then return the index of the array element which was not equal and stop comparing.

So in this example,

array[0] == array[1] 
#=> true

Thus, move on

array[1] == array[2]
=> false

Hence return index i.e = 1

return 1
  • If all equal then what to return ? – Arup Rakshit Mar 25 '14 at 08:52
  • @ArupRakshit: The idea is to start comparing from the beginning and stop and return index when not the same, if all the values are the same then return nil –  Mar 25 '14 at 08:56
  • @MarkV what practical application do you have for such a function? –  Mar 25 '14 at 11:47

2 Answers2

4

Here is how I would do using Array#each_index :

def compare_array_elements(array)
  siz = array.size - 1
  array.each_index { |i| return i if i != siz && array[i] != array[i+1] }
  nil
end

array = [[1.5,"cm"],[1.5,"cm"],[1.5,"mm"]] 
compare_array_elements(array) # => 1

array = [[1.5,"cm"],[1.5,"cm"],[1.5,"cm"]]
compare_array_elements(array) # => nil
Arup Rakshit
  • 116,827
  • 30
  • 260
  • 317
0
[[1.5,"cm"],[1.5,"cm"],[1.5,"m"]]
.each_cons(2).with_index(1).find{|(a, b), i| a == b}.last
# => 1
sawa
  • 165,429
  • 45
  • 277
  • 381