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
On Wed, Nov 5, 2008 at 7:35 AM, Stuart Clarke <stuart.clarke1986@gmail.com> 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.
Pseudo code
if dataID occurs more than 5times
print results
end
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 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
h = Hash.new(0)
arr.each {|x| h += 1}
h.each {|x,y| p x if y > 3}
Harry
···
On Wed, Nov 5, 2008 at 10:35 PM, Stuart Clarke <stuart.clarke1986@gmail.com> 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.
Pseudo code
if dataID occurs more than 5times
print results
end
Pretty darn good. Why not use a database? I guess it comes down to
often you want to query the data.
Todd
···
On Wed, Nov 5, 2008 at 8:18 AM, Brian Candler <b.candler@pobox.com> 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
--
Great stuff thanks. I went the last solution as I only want to pick up
any any high occurances.
Many thanks
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