Задача оптимального расположения событий решается каждый раз когда вы заходите в свой Google Calendar и смотрите на одновременные события (events). С математической точки зрения это задача упорядочивания множества событий таким образом, что для каждого события существует параметр left (глубина) и width (ширина).
| 1 | |||
| 2 | 3 | ||
| 4 | |||
| 1 |
В действительности Google немного искажает ширину событий, что-бы человеку было ещё удобней видеть что внутри, но суть вы можете увидеть в таблице выше, где 5 событий размещаются внутри одного дня. Глубина должна с одной стороны зависеть от времени когда событие начинается, с другой стороны если события (зелёное и серое) начинаются в одно и то же время, то надо уже исходить из взаимных расположений последующих событий (что-бы пурпурное событие получило максимальную ширину)
Как бы вы решали такую задачу, если у вас есть массив событий с их временами (начало и конец)? Чуть позже предоставлю свое решение..