Name: Roman Salmin
Task: gantt
Level: 2
Language: Haskell
Work: 75
Duration: 22

Как собирать: make в самой верхней директории проекта

Как запускать: ./gant source.csv или cat source.csv | ./gant

 Работа часто велась хаотично и в noisy environment - параллельно с просмотром фильмов, с готовкой еды, 
в очереди в больницу и пр.. По этому думаю временную статистику вам попортит. Какое то ("тактическое")
время на размышления сюда входит но не всё. 
 
  В Duration написал количество дней, когда писалось хоть одна строчка. Реально же первая строчка
написана 20 января, последняя 1 марта. 
 По скольку алгоритм совершенствовался со временем, и не все необходимые features были реализованы
с самого начала, сложно сказать сколько ушло на стадию 1 или на стадию 2. 
 
Алгоритм: жадный алгоритм, для определения возможности построить диаграмму и
    верхней оценки времени проекта +  полный перебор с эвристикой. Все pure functional,
    работает не торопливо.
 
В директории, собираются ещё две программы testParse игнорируйте его, и testGant - не доделанный 
генератор диаграмм (генерит только диаграммы без Constraints).

 Тестовые примеры называются source.csv.test[1-5].
 
 Использовался компилятор ghc6.10.3, linux.
 
Спасибо за конкурс.
 Роман Салмин.
 

P.S.  По поводу стадии три, то она реализовывается дополнительными программами типа csv2xls через pipe
примерно так$ cat source.xls | xls2csv | gant | csv2xls, так что тут писать нечего
(xls2csv входит в catdoc, csv2xls есть на питоне, ods2txt входит в пакте odt2txt, вот csv2ods - вроде нет)
для работы с google-doc конечно надо написать что то типа getGoogleDoc, putGoogleDoc.

P.S.S. По поводу стадии 4 то программа по идеи должна генерировать оптимальное решение, 
т.е. если ресурсы можно равно нагрузить то так и будет.


P.S.S.S. вот примерно как шла разработка:
Итого: 1) Парсинг и принтинг 6-8 часов
             2) Простой алгоритм для этапа 1, написание и отладка 7-8 часов.
             3) fixrt ограничение работает. (+парсинг ограничений) 8 часов
             4) fixt ограничение работает + улучшение эвристики 6 часов.
             5) оптимизация эвристики 3часа.
             6) порядковые ограничения написаны, и отлажены. время 6ч30мин. (Эвристика ухудшена)
             7) написан и отлажен жадный алгоритм, для получения быстрого приблизительного ответа. 2ч30мин
             8) понятно что делать с эвристикой для порядковых ограничений. Так же немного разгребён код. 3ч30мин. (теперь можно дождаться результата)
             9) Целые в качестве индефикаторов. 55минут (улучшена скорость на 30%)
             10) Учёт выходных, праздников, вывод результатов в в виде дат.  4часа
             11) Оптимизация и учёт rest/spent/worktime. 1час30мин. конец стадии 2?
             12) циклические зависимости в ограничениях не страшны 1ч30мин
             13) вывод в виде csv  + bugfixing 2часа30мин
             14) генератор заданий 4часа + 6часов непонятно чего
             15) правильная работа с сделанными задачами 1час
             16) включение кода для работы с недоделанными задачами, чистка, bugfixing 5-15 часов
             
