2. Palíndrom (5 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.

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

palindrom.palindrom(it)
Paràmetres:

it – un iterador sobre una seqüència de paraules (str)

Retorna:

un tuple format per 2 iteradors (it1, it2) cadascun d’ells sobre una seqüència de tuples de la forma (paraula, longitud) on paraula és una paraula de it que sigui palíndrom i longitud és la seva longitud. A l’iterador it1 hi ha les paraules de it que són palíndroms i que tenen un nombre parell de lletres i a l’iterador it2 hi ha les paraules de it que són palíndroms i que tenen un nombre senar de lletres.

Una paraula és un palíndrom si quan es capgira queda igual. També es coneixen com capicues. Recordeu que donat un string s, l’expressió s[::-1] obté un string resultat de capgirar s.

Per exemple:

>>> it = iter(['carrac', 'flor', 'sorros', 'ara', 'arbre', 'civic'])

>>> it1, it2 = palindrom(it)
>>> iter(it1) is it1
True
>>> iter(it2) is it2
True
>>> next(it1)
('carrac', 6)
>>> next(it1)
('sorros', 6)
>>> next(it1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

>>> list(it2)
[('ara', 3), ('civic', 5)]
>>> next(it2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

Disposeu de més proves al fitxer test-palindrom.txt

Nota

Una possible solució al problema usa el mètode itertools.tee() a més de les funcions estàndard de python.