найти перекрывающиеся времена в массиве хэшей - PullRequest
1 голос
/ 03 марта 2012

У меня есть массив классов, и я хочу найти, где может быть наложение расписания.

Мой массив выглядит примерно так

[
  {
    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
  }
]

довольно просто.Теперь я хочу получить массив, в который я добавляю начало и длину, а затем получить перекрывающиеся классы, чтобы уведомить пользователя о наличии конфликта.

Я знаю, что могу сделать большое для цикла и сравнить таким образом, но я думаю, что должен быть более хороший способ сделать это в Ruby, что-то вроде:здесь, у меня есть это, я просто хочу сохранить пример простым).

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

есть предложения?

1 Ответ

2 голосов
/ 03 марта 2012

Вы можете использовать Array#combination так:

class_list.combination(2).select{|c1, c2|
  # here check if c1 and c2 overlap
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...