Алгоритм расчета отрезков на координатной линии

Максим19 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
15.12.2012

Необходимо написать алгоритм на языке php

Имеется прогресс бар заданной ширины. Пользователи указывают:

1) дату завершения этой шкалы

2) отрезки (этапы) произвольный длины. Например:

1. 01.12.12 - 05.12.12

2. 05.12.12 - 10.12.12

3. 10.12.12 - 15.12.12

......

Необходимо для данных этапов просчетать доли в процентном соотношении от общей длины шкалы.

Но есть нюансы:

1) минимальный размер этапа должен быть не менее 4%

2) Среди этапов могут быть этапы с неуказанной датой.

Такие этапы должны быть размером в промежуток между этапами с указанной датой, т.е:

1. 01.12.12 - 05.12.12

2. 00.00.00 - 00.00.00

3. 00.00.00 - 00.00.00

4. 10.12.12 - 15.12.12

для 2го этапа дата начала будет - дата завершения 1го, для 3го конец будет - дата начала 4го.

Подсчитываем общую долю 2х этапов, делим на число этапов и присваиваем каждому из этапов.

3) Этапы выстроены по дате завершения - от раннего к последнему.

4) У этапов даты начала могут не состыковываться с датой завершения предыдущего этапа.

т.е. может быть такое:

1. 01.12.12 - 05.12.12

2. 02.12.12 - 10.12.12

3. 10.12.12 - 15.12.12

Шкала представляет собой прямую от 0% до 100%.

У этапов должны быть 2 координаты - начало (%) и конец (%).

Необходимо написать функцию, в которую передаются этапы с датами, общая дата завершения, а на выходе функция возвращает координаты (в %) всех этапов.

Заявки фрилансеров