1. El robot aspiradora (6 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.
Una aspiradora robotitzada pot moure’s només en les quatre direccions principals, indicades amb les lletres “N”, “E”, “S” i “O” (nord, est, sud i oest). El robot emmagatzema el recorregut que realitza per a netejar una habitació com una sequència de parelles d’una lletra (la direcció en què es mou) i un enter (quants centímetres es mou en aquella direcció). S’entén que dos moviments consecutius del robot sempre han de tenir una direcció diferent. Volem conèixer els punts del pla on s’aturarà per canviar de posició.
Es demana que implementeu la següent funció i la deseu al fitxer robot.py:
- robot.posicions_robot(it)¶
- Paràmetres:
it – iterador sobre una seqüència que representa el recorregut del robot aspiradora.
- Retorna:
iterador de punts del pla on s’atura el robot per a canviar de posició, incloent el punt inicial i final del recorregut. Cada punt és una parella de nombres enters i el robot parteix del punt (0,0). La direcció nord (“N”) correspon l’eix vertical positiu i la direcció est (“E”) correspon a l’eix horitzontal positiu.
Per exemple:
>>> from robot import posicions_robot
>>> it1 = iter( [('N',30), ('E',20), ('N',10), ('O',15), ('S',60)] )
>>> it2 = posicions_robot(it1)
>>> next(it2)
(0, 0)
>>> next(it2)
(0, 30)
>>> for x in it2:
... print(x, end='/')
(20, 30)/(20, 40)/(5, 40)/(5, -20)/
Disposeu d’un joc de proves més complet en el fitxer tests-robot.txt