Program ma za zadanie znaleźć możliwe przedziały czasowe, w których dwie osoby mogą zoorganizować spotkanie o określonej długości.
Projekt można zbudować z pomocą maven.
mvn assembly\:assembly
Można też użyć skryptu
./mvnw assembly\:assembly
W folderze target powinien poswtać orangeunit-jar-with-dependencies.jar z wszsytkimi zależnościami.
Zakładając, że jesteśmy w głównym folderze
java -jar target/orangeunit-jar-with-dependencies.jar kalendarz1.json kalendarz2.json 00:30
Pierwsze dwa parametry to pliki z kalendarzami. Trzeci parametr to długość spotkania w formacie "hh:mm".
- Jeżeli któryś z kalendarzy jest nullem zwróć pustą listę
- Znajdź przedział czasowy w którym obydwie osoby pracują
- Jeżli taki przedział nie istnieje zwróć pustą listę
- Utwórz kopiec z wszystkimi spotkaniami osób(im spotkanie zaczyna się wcześniej tym wyżej na stosie, kiedy dwa zaczynają się w tym samym momencie, to, które jest dłuższe jest wyżej na stosie)
- Utwórz stos możliwych spotkań
- Dopóki stos i kopiec nie są puste:
- Zdejmij element ze stosu i oznacz go jako a
- Zdejmij element kopca i oznacz go jako b
- Znajdź różnicę przedziałów a i b
- Dodaj do stosu znalezione przedziały(wcześniejszy dodaj pierwszy)
- Przefiltruj stos tak, żeby przedziały miały minimalną długość taką jaka jest długość spotkania
- Zwróć przefiltrowany stos