1. Encavallament de tasques (3 punts)¶
Volem saber si dues tasques diàries s’encavallen, és a dir, si coincideixen totalment o parcialment en el temps. De cada tasca se’n coneix l’hora d’inici i de final. Si la primera tasca està programada entre les hores t1_ini i t1_fi i la segona tasca entre les hores t2_ini i t2_fi, l’interval d’encavallament es pot obtenir fàcilment mitjançant els càlculs següents:
t_ini = max(t1_ini, t2_ini)
t_fi = min(t1_fi, t2_fi)
Llavors, si t_ini és anterior a t_fi, ja tenim l’interval d’encavallament. En cas contrari, vol dir que les dues tasques no coincideixen en el temps.
Es demana que implementeu la funció especificada a continuació i la deseu al fitxer tasques2.py:
- tasques2.encavallament(t1_ini, t1_fi, t2_ini, t2_fi)¶
- Paràmetres:
t1_ini – hora d’inici de la primera tasca (
datetime.time)t1_fi – hora d’acabament de la primera tasca (
datetime.time)t2_ini – hora d’inici de la segona tasca (
datetime.time)t2_fi – hora d’acabament de la segona tasca (
datetime.time)
- Retorna:
Durada de l’interval d’encavallament de les dues tasques. En cas que no s’encavallin, cal retornar un interval de 0 segons.
- Tipus de retorn:
Per exemple:
>>> from tasques2 import encavallament
>>> from datetime import time
>>> encavallament(time(10, 00), time(12, 00), time(11, 00), time(14, 00))
datetime.timedelta(seconds=3600)
>>> encavallament(time(10, 00), time(12, 30), time(17, 45), time(20, 00))
datetime.timedelta(0)
Disposeu d’un joc de proves més complet al fitxer tests-tasques2.txt.