2. Índex dels elements d’una matriu (3 punts)¶
Avís
Per a resoldre aquest exercici no es poden fer servir iteracions (ni for ni while ), només les funcions predefinides de Python i les dels mòduls itertools, functools i operator. Tampoc no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements dels iteradors.
Representem els índexos dels elements d’una matriu matemàtica com un tuple de dues coordenades enteres (f, c), essent f el número de la fila i c el número de la columna. El primer element d’una matriu, el de la posició de dalt de tot a l’esquerra, té índexos (1,1). Volem obtenir els índexos dels elements que estan per sobre la diagonal d’una matriu quadrada de dimensió n. Per exemple, en una matriu quadrada de dimensió 4
aquests índexos són (1,2) (1,3) (1,4) (2,3) (2,4) i (3,4).
Es demana que, en un fitxer anomenat indexmat.py deseu la funció especificada a continuació:
- indexmat.index_matriu(n)¶
- Paràmetres:
n – enter estrictament positiu (
int)- Retorna:
un iterador sobre una seqüència dels índexos dels elements que estan per sobre la diagonal d’una matriu quadrada de dimensió n, ordenats per files i, dins de cada fila, per la columna.
Per exemple:
>>> from indexmat import index_matriu
>>> it = index_matriu(4)
>>> next(it)
(1, 2)
>>> next(it)
(1, 3)
>>> for p in it:
... print(p, end='-')
(1, 4)-(2, 3)-(2, 4)-(3, 4)-
Es recomana fer servir una funció dels iteradors combinatoris del mòdul itertools per a resoldre aquest exercici.
Disposeu d’un joc de proves més complet al fitxer test-indexmat.txt.