2. Fum (3 punts)

Avís

Per a resoldre aquest exercici no es poden fer servir iteracions (ni for ni while ), només les funcions predefinides de Python i les dels mòduls itertools, functools i operator. Tampoc es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar els elements dels iteradors.

Una persona fumadora vol analitzar quins dies de la setmana fuma més cigarretes i per això s’apunta el nombre de cigarretes que fuma cada dia.

En un fitxer anomenat fum.py deseu la funció especificada a continuació.

fum.fum(it, dset, llindar)
Paràmetres:
  • it – un iterador sobre una seqüència d’enters (int) indicant el nombre de cigarretes fumades cada dia. La seqüència comença en un dilluns, no hi falta cap dia i els dies estan ordenats cronològicament

  • dset – una llista amb els noms dels 7 dies de la setmana (str), ordenada de 'dilluns' a 'diumenge'

  • llindar – un nombre de cigarretes llindar

Retorna:

un iterador sobre una seqüència de noms de dies de la setmana (str) corresponent als dies de la setmana de la seqüència it en què aquesta persona ha fumat un nombre de cigarretes més gran o igual que llindar.

Exemples:

>>> lfum1 = iter([10, 8, 9, 6, 6, 9, 12, 12, 8, 8, 8, 8, 9, 10,
...               10, 7, 6, 7, 7, 8, 9])
>>> ldset = ['dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte', 'diumenge']
>>> it = fum(lfum1, ldset, 9)
>>> iter(it) == it
True
>>> list(it)
['dilluns', 'dimecres', 'dissabte', 'diumenge', 'dilluns', 'dissabte', 'diumenge', 'dilluns', 'diumenge']

Disposeu de més tests al fitxer test-fum.txt

Nota

Una possible solució al problema usa la funció itertools.cycle() a més de les funcions estàndard de Python.