2. Iterador de possibles parelles (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.
Afegiu el mètode següent a la classe Memory (editant el fitxer memory.py):
- Memory.parelles(c)¶
Retorna un iterador de posicions de les cartes que tenen la imatge c, ordenades de forma creixent per les coordenades de les files, i cada fila també creixentment per les coordenades de les columnes.
Aquest mètode ha de respondre així:
>>> from memory import Memory
>>> m = Memory(4, 6)
>>> m.omplir('ABCCAH', 0)
>>> m.omplir('BADAEC', 1)
>>> m.omplir('HDCFFE', 2)
>>> m.omplir('FGAAGF', 3)
>>> for f in range(4): # Dibuixem l'espai de joc (les cartes)
... for c in range(6):
... print(m[f,c], end='')
... print()
ABCCAH
BADAEC
HDCFFE
FGAAGF
>>> it = m.parelles('B')
>>> for pos in it:
... print(pos, end='-')
(0, 1)-(1, 0)-
>>> next(it, -1) # Comprovem que l'iterador s'ha exhaurit
-1
>>> for pos in m.parelles('F'):
... print(pos, end='-')
(2, 3)-(2, 4)-(3, 0)-(3, 5)-
Disposeu de jocs de prova al fitxer tests-itermemory.txt