From: Todd Benson Date: 2008-11-05T23:27:36+09:00 Subject: Re: String comparisions and counting On Wed, Nov 5, 2008 at 8:18 AM, Brian Candler wrote: > Stuart Clarke wrote: >> I have an array full of strings which represent a date ID. The array >> contains indivduals strings like the following: >> >> TueAug052008 >> >> I want to iterate through this array (@eventbydate[]) and check each of >> the values of the array. I then want a statement which says if any of >> the date ID's in the array occurs more than 5 times print out some data. > > counts = Hash.new(0) > @eventbydate.each { |e| counts[e] += 1 } > if counts.find { |c| c >= 5 } > puts "Print out some data" > end > > There are other variations: > > ... > if counts.values.max >= 5 > ... > > More efficient is to stop counting as soon as you reach 5, if you don't > need the final values: > > counts = Hash.new(0) > if @eventbydate.find { |e| (counts[e] += 1) >= 5 } > puts "Print out some data" > end > -- Pretty darn good. Why not use a database? I guess it comes down to often you want to query the data. Todd