У меня есть массив классов, и я хочу найти, где может быть перекрытие графика.найти совпадающие времена в массиве хэшей
Мой массив что-то вроде этого
[ { 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}
любые предложения?
Таким образом, вы получите все, что в два раза, и вы будете сравнивать элементы с самим собой. – Reactormonk
Не с 'комбинацией'. С 'продуктом' или' перестановкой', да. –
спасибо mladen, это своего рода работа, это лучший способ поместить результаты в массив, чтобы сделать 'find_overlap << [c1, c2]' ?? – pedalpete