2008/2/12, 7stud -- <bbxx789_05ss / yahoo.com>: > Adam Akhtar wrote: > > the reg exp. looks good > > You should never consider a regex good looking. regexes should be > avoided whenever possible in favor of String methods. Better solutions > have been posted. I would not subscribe to that rule. Often regular expressions are faster than pure String based approaches - it depends on the issue at hand. > Robert Klemme wrote: > > I would use another algorithm because of efficiency: > > > > list.delete_if > > Repeatedly deleting elements from the middle of an array is certainly > not efficient. Also, suppose the results are: > > [Adam Bobby wILd] > > Looking at the results, you would have no way of knowing whether there > were duplicates spelled: adam, bobby, and wild. Therefore, the case of > the results appears to be irrelevant. If the case of the results is > irrelevant, then just providing the set is enough: Alternatively one could use a Hash to preserve all spellings: irb(main):001:0> list = %w{adam Adam bobby Bobby wild wILd}.sort_by { rand } => ["wild", "wILd", "Adam", "adam", "Bobby", "bobby"] irb(main):002:0> res = Hash.new {|h,k| h[k]=[]} => {} irb(main):003:0> list.each {|w| res[w.downcase] << w} => ["wild", "wILd", "Adam", "adam", "Bobby", "bobby"] irb(main):004:0> res => {"bobby"=>["Bobby", "bobby"], "wild"=>["wild", "wILd"], "adam"=>["Adam", "adam"]} irb(main):005:0> It all depends... Cheers robert -- use.inject do |as, often| as.you_can - without end