String comparisions and counting

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.

Pseudo code

if dataID occurs more than 5times
print results
end

I hope this makes sense.

I would appreciate any help

Regards

On Wed, Nov 5, 2008 at 7:35 AM, Stuart C.
[email protected] wrote:

if dataID occurs more than 5times
print results
end

I hope this makes sense.

I would appreciate any help

Regards

[1, 1, 2, 3, 4].count(1)

Todd

Stuart C. 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

On Wed, Nov 5, 2008 at 10:35 PM, Stuart C.

Oops:

if counts.find { |c| c >= 5 }

if counts.find { |k,v| c >= 5 }

On Wed, Nov 5, 2008 at 10:35 PM, Stuart C.
[email protected] wrote:

Posted via http://www.ruby-forum.com/.

Is this helpful?

arr = [“a”,“b”,“a”,“c”,“a”,“a”,“c”]

h = Hash.new(0)
arr.each {|x| h[x] += 1}
h.each {|x,y| p x if y > 3}

Harry

Great stuff thanks. I went the last solution as I only want to pick up
any any high occurances.

Many thanks

Brian C. wrote:

Stuart C. 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

On Wed, Nov 5, 2008 at 8:18 AM, Brian C. [email protected]
wrote:

counts = Hash.new(0)

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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs