2. Fer Match3 iterable (1 punt)¶
Avís
Per a resoldre aquest exercici no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura auxiliar per a desar els elements d’un iterador.
Modifiqueu la classe Match3 per tal que sigui iterable (editeu el mateix fitxer match3.py).
La classe ha de permetre iterar sobre una seqüència de tuples de tres elements (f, c, v), essent f i c les coordenades de les posicions del tauler i v l’identificador de la joia de la posició (f, c). Aquesta seqüència ha d’estar ordenada de forma creixent per les coordenades de les files, i cada fila també creixentment per les coordenades de les columnes. Ara bé, la seqüència no ha d’incloure les posicions del tauler buides.
Ara, la classe hauria de respondre així:
>>> from match3 import Match3
>>> m = Match3(5, 7)
>>> m[0,0] = 5
>>> m[0,6] = 2
>>> m[1,2] = 3
>>> m[2,1] = 1
>>> m[2,2] = 4
>>> m[2,3] = 1
>>> m[3,4] = 5
>>> it = iter(m)
>>> for t in it:
... print(t, end='-')
(0, 0, 5)-(0, 6, 2)-(1, 2, 3)-(2, 1, 1)-(2, 2, 4)-(2, 3, 1)-(3, 4, 5)-
>>> next(it, 'final') # Comprovem que l'iterador s'ha exhaurit
'final'
>>> m[1,4] = 3
>>> m[3,2] = 3
>>> m[4,2] = 1
>>> m[2,4] = 5
>>> for t in m:
... print(t, end='-')
(0, 0, 5)-(0, 6, 2)-(1, 2, 3)-(1, 4, 3)-(2, 1, 1)-(2, 2, 4)-(2, 3, 1)-(2, 4, 5)-(3, 2, 3)-(3, 4, 5)-(4, 2, 1)-
Disposeu de jocs de prova al fitxer tests-itermatch3.txt