< :the previous in number
^ :the list in numerical order
> :the next in number
P :the previous artilce (have the same parent)
N :the next (in thread)
|<:the top of this thread
>|:the next thread
^ :the parent (reply-to)
_:the child (an article replying to this)
>:the elder article having the same parent
<:the youger article having the same parent
---:split window and show thread lists
| :split window (vertically) and show thread lists
~ :close the thread frame
.:the index
..:the index of indices
At 2010-03-18 06:50PM, "Steve Wilhelm" wrote:
> I have an array of records that contain timestamps at random intervals.
> The records are ordered by timestamp.
>
> I would like to convert the array into an array of arrays; each subarray
> would contain "grouped records." Grouping would occur if the timestamp
> of the next element in the original array is within thirty seconds of
> the current element.
>
> Example (second column is timestamp in seconds starting from zero).
>
> A 0
> B 15
> C 35
> D 100
> E 205
> F 215
> G 300
>
> would result in
>
> [[A, B, C], [D], [E, F], [G]]
>
> Any help on how to do this in the "Ruby Way" would be appreciated.
Lots of verbose answers. It can be quite short:
a = [['a',0],['b',15],['c',35],['d',100],['e',205],['f',215],['g',300]]
a.group_by {|name,val| val/100} .
collect do |key,list|
list.collect {|name, time| name}
end
# => [["a", "b", "c"], ["d"], ["e", "f"], ["g"]]
--
Glenn Jackman
Write a wise saying and your name will live forever. -- Anonymous