4. Recursivitat: Comprova dates (2 punts)

Avís

Per a resoldre aquest exercici no es poden fer servir iteracions (ni for ni while ), només funcions recursives.

Representem les dates d’inici i de fi d’un procés industrial com una tupla amb dues instàncies de la classe datetime.date, on la primera representa la data d’inici i la segona la data de fi del procés. A aquesta tupla l’anomenem p-span. Diem que un p-span és incorrecte quan la seva data d’inici és estrictament posterior a la data de fi.

Es demana que al mòdul date_checking (fitxer date_checking.py) implementeu la funció recursiva següent:

date_checking.verificacio(l)
Paràmetres:

l – llista de p-span

Retorna:

l’índex (d’acord amb la indexació de les llistes de Python) i diferència de dies del primer p-span incorrecte. En cas que no n’hi hagi cap, s’ha de retornar el parell -1, -1.

Per exemple, donada la llista amb les dates següents:

>>> l = []
>>> l.append((datetime.date (2023, 3, 20), datetime.date (2023, 3, 25)))
>>> l.append((datetime.date (2023, 3, 20), datetime.date (2023, 3, 20)))
>>> l.append((datetime.date (2023, 3, 20), datetime.date (2023, 3, 19)))
>>> l.append((datetime.date (2023, 3, 20), datetime.date (2023, 2, 15)))
>>> verificacio(l)
(2, -1)

el resultat correcte verificacio(l) és (2, -1) ja que el primer p-span incorrecte està a la posició 2 i la seva diferència en dies de les dates d’inici i fi és de -1 dies. El p-span de la posició 3 també és incorrecte però és posterior.

Nota

Disposeu de més jocs de proves al fitxer tests-date_checking.txt.