在散列数组中查找重叠时间

时间:2012-03-03 14:36:20

标签: ruby arrays hash

我有一系列课程,我想找到可能有计划重叠的地方。

我的数组是这样的

[
  {
    id:2,
    start: "3:30",
    length: 40,
    break: 30,
    num_attendees: 14
  },
  {
    id: 3,
    start: "3: 40",
    length: 60,
    break: 40,
    num_attendees: 4
  },
  {
    id: 4,
    start: "4: 40",
    length: 30,
    break: 10,
    num_attendees: 40
  }
]
很简单。 现在,我想得到一个数组,我在其中添加开始和长度,然后获取重叠的类以通知用户他们有冲突。

我知道我可以做一个大的for循环并比较那样,但我认为必须有一个更好的方法在Ruby中做这个,比如(忽略我们在这里绝对没有工作,我得到了,我只想保持简单的例子。

overlap = class_list.select{|a,b| if a.start+a.length>b.start return a,b end}

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以像这样使用Array#combination

class_list.combination(2).select{|c1, c2|
  # here check if c1 and c2 overlap
}