2008/2/12, William James <w_a_x_man / yahoo.com>: > On Feb 12, 1:45 am, Robert Klemme <shortcut... / googlemail.com> wrote: > > 2008/2/12, Adam Akhtar <adamtempor... / gmail.com>: > > > > > the reg exp. looks good but when i try to apply it to help me romove > > > duplicates from a list it doesnt seem to work > > > > > list = %w{adam Adam bobby Bobby wild wILd} > > > list.sort > > > > The line above is ineffective because you do not sort the original list. > > > > > list.each_index do |x| > > > list.delete_at(x) if (/list[x]/i =~ list[x+1]) #remove entries which > > > have same spelling but in diff. case > > > end > > > puts "" > > > puts list > > > > I would use another algorithm because of efficiency: > > > > #!/bin/env ruby > > > > require 'set' > > > > # ensure random order > > list = %w{adam Adam bobby Bobby wild wILd}.sort_by { rand } > > dups = Set.new > > > > p list > > list.delete_if {|w| not dups.add? w.downcase } > > p list > > We don't need sets for this. > > list = %w{adam Adam bobby Bobby wild wILd}.sort_by { rand } > ==>["wild", "bobby", "Bobby", "wILd", "Adam", "adam"] > list.map{|x| x.upcase}.uniq > ==>["WILD", "BOBBY", "ADAM"] As far as I can see the requirement was to remove duplicates and not to output a uniform cased list. Cheers robert -- use.inject do |as, often| as.you_can - without end