On 11 May 2007, at 11:18, Mike Steiner wrote:

> def RemoveDupsFromLists ( list1 , list2 )
>    list1.each_index do | i |
>        list2.each_index do | j |
>            if list1[i] == list2[j]
>                list1.delete_at ( i )
>                list2.delete_at ( j )
>            end
>        end
>    end
>    return [ list1 , list2 ]
> end

Here is how I would write it: (it didn't give quite the same results  
as your method but seems to be closer to what you asked for so...):

def remove_duplicates(list1,list2)
   (list1 & list2).each do |x|
     list1.delete(x)
     list2.delete(x)
   end
   return list1,list2
end

irb(main):028:0> RemoveDupsFromLists([1,1,2,3,4],[2,2,3,5,5])
=> [[1, 1, 4], [2, 5, 5]]
irb(main):029:0> remove_duplicates([1,1,2,3,4],[2,2,3,5,5])
=> [[1, 1, 4], [5, 5]]

Be careful with your method since it alters the Arrays as you iterate  
through them and will give hard to understand results sometimes. In  
the example above '2' is a duplicate but is only deleted from the  
second array once because of this problem/feature.

Alex Gutteridge

Bioinformatics Center
Kyoto University