
Schedule Mode Builder
You are given an unordered list of tasks. Each task is as string, which incudes a start and end of task and has a view "hh:mm-hh:mm". Tasks are unique. You function must return chronologically sorted, filtered list of tasks, which can be scheduled without overlapping. For this purpose, you are also given a mode as an integer, which tells you the rule of choosing non-overlapping tasks.
Modes:
- 1: earliest start among available, (if a few variants) shortest duration;
- 2: earliest start among available, (if a few variants) longest duration;
- 3: longest total duration of chosen tasks, (if a few variants) larger number of tasks done, (if a few variants) earliest;
- 4: larger number of tasks done, (if a few variants) longest total duration of chosen tasks, (if a few variants) earliest.
At animation tasks are always sorted as earliest start + shortest duration. Each task is positioned on the first "row", where it is not overlapping with the previous task in a "row". If the current task is overlapping with all existed "rows" - the new "row" is started. For example, for the input [['09:00-10:00',...