2014-01-25 9 views
0

Я пытаюсь написать алгоритм столкновений лекций для приложения расписания. Каждая лекция имеет дату начала и окончания.Lecture collision boolean algorithm algorithm

currentListElement - это существующая лекция в моем текущем расписании, и я хочу добавить selectedLecture и проверить, есть ли столкновение между моими текущими лекциями. Поэтому это булевское выражение должно возвращать true, если происходит столкновение.

Спасибо за вашу помощь

(currentListElement['startDate'] < chosenLecture['startDate'] 
    || currentListElement['startDate'] >= chosenLecture['endDate']) 
&& (currentListElement['endDate'] <= chosenLecture['startDate'] 
    || currentListElement['endDate'] > chosenLecture['endDate']) 

ответ

2

На самом деле есть небольшая ошибка, попробуйте это:

(currentListElement['endDate'] < chosenLecture['startDate'] 
|| currentListElement['startDate'] > chosenLecture['endDate']) 

Там нет столкновений в двух случаях:

  1. Лекция установленный полностью перед текущим. Чтобы проверить это, просто убедитесь, что он заканчивается до начала текущего запуска.
  2. Лекция устанавливается полностью после текущей. Чтобы убедиться в этом, просто убедитесь, что он запускается после окончания текущего.