1. Codi secret (4 punts)

Avís

Per a resoldre aquest exercici no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements d’un iterador.

Per comunicar-se de forma secreta, uns investigadors volen enviar-se una llista de sospitos d’un cas criminal. Cada persona investigada té un pseudònim de 4 lletres. Per passar-se la llista de forma encriptada utilitzen la següent estrategema: s’envien un text tal que els pseudònims dels sospitosos estan formats per les dues primeres lletres de dues paraules consecutives del text.

Per exemple amb el str: «pans copa manta rimel jornada serrall cama lira loteria latitud dau niu nas», obtindriem un iterador de la seqüència:

paco mari jose cali lola dani nana

Vegeu com el nom “paco” es construeix a partir de les paraules “pans” i “copa” i com “mari” es crea amb “manta” i “rimel”. Com es pot veure en l’exemple anterior, si la seqüencia inicial té un nombre senar de paraules, el darrer nom està format per la repetició de les dues primeres lletres de la darrera paraula (“nana” en l’exemple).

Es demana que, en un fitxer anomenat codisecret.py, hi deseu la funció generadora especificada a continuació:

codisecret.revela(text)
Paràmetres:

text – un str format per paraules separades per un o més espai, sense signes de puntuació i en el qual totes les paraules tenen com a mínim 2 lletres.

Retorna:

un iterador dels noms dels sospitosos, tots formats per 4 caràcters

Per exemple:


>>> it = revela('pa copa manta rimel jornada serrall cama lira loteria latitud dau niu nas')
>>> next(it)
'paco'
>>> next(it)
'mari'
>>> for e in it:
...     print(e, end='-')
...
jose-cali-lola-dani-nana-

Disposeu d’un joc de proves més complet en el fitxer tests-revela.txt