Мне недавно пришлось написать код, который возвращает пару сотрудников, которые больше всего работали вместе над общим проектом. Вот код, который я придумал:
Примечание 1: Null читается программой как "Today"
Примечание 2: Данные поступают из файла .txt в этой форме:
EmpID,ProjectID,DateFrom,DateTo
1,101,2014-11-01,2015-05-01
1,103,2013-11-01,2016-05-01
2,101,2013-12-06,2014-10-06
2,103,2014-06-05,2015-05-14
3,100,2016-03-01,2018-07-03
3,102,2015-06-04,2017-09-04
3,103,2015-06-04,2017-09-04
4,102,2013-11-13,2014-03-13
4,103,2016-02-14,2017-03-15
4,104,2014-10-01,2015-12-01
5,100,2013-03-07,2015-11-07
5,101,2015-07-09,2019-01-19
5,102,2014-03-15,NULL
6,101,2014-03-15,2014-03-16
Проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что я должен адаптировать / изменить код, чтобы вернуть пару сотрудников, которые работали вместе друг с другом как можно дольше (не в одном проекте, а во всех проектах вместе). У меня проблемы с адаптацией моего текущего кода, который прекрасно работает для того, что он есть, и мне интересно, стоит ли мне просто поцарапать все это и начать с самого начала (но это будет стоить мне много времени, что я не понимаю нет в настоящее время). У меня трудности с получением комбинаций сотрудников, которые работали вместе над проектами.
Буду очень признателен, если кто-нибудь даст мне какие-нибудь советы! Спасибо!
Редактировать 1: Человек в комментариях напомнил мне упомянуть, что перекрывающиеся дни должны учитываться как, например:
Лица А и В работают над двумя проектами в течение всего июня. Это означает, что его следует считать общей общей работой за 30 дней (для двух проектов), а не суммировать оба времени проекта вместе, что приведет к 60 дням.