1. Moviments d’un zombie (5 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.

Un personatge zombie d’un joc d’ordinador només realitza moviments en vertical o en horitzontal. El joc emmagatzema la seqüència de posicions que recorre el zombie en un iterador de coordenades (x,y), que són tuples de dos enters. A partir d’aquesta seqüència, en volem obtenir una altra que indiqui en quina direcció s’ha mogut el zombie i la distància que ha recorregut en cada moviment. Les quatre direccions possibles són nord, oest, sud i est i es representen amb les lletres 'N', 'O', 'S', i 'E', respectivament. La direcció nord correspon l’eix y positiu, sud a l’eix y negatiu, est a l’eix x positiu i oest a l’eix x negatiu.

Es demana que dissenyeu la funció especificada a continuació i la deseu en un fitxer anomenat zombie.py:

zombie.moviments_zombie(it)
Paràmetres:

it – Iterador d’una seqüència de posicions, que representa el recorregut d’un zombie. Com a mínim conté dues posicions.

Retorna:

Iterador de tuples (direcció, distància) corresponent als moviments del zombie quan s’ha mogut seguint les posicions de it, tal com s’explica més amunt.

Per exemple,


>>> from zombie import moviments_zombie

>>> l1 = [(6, 8), (6, 10), (10, 10), (10, 4), (5, 4)]
>>> it = moviments_zombie(iter(l1))
>>> for t in it:
...    print(t, end='-')
('N', 2)-('E', 4)-('S', 6)-('O', 5)-
>>> next(it, 'final')
'final'

Disposeu d’un joc de proves més complet al fitxer tests-zombie.txt