Avís

Per a resoldre aquests exercicis no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura. Ara bé, podeu dissenyar les funcions demanades bé com a generadors, bé utilitzant les funcions predefinides de Python i les dels mòduls itertools, functools i operator.

1. Coeficients d’un Polinomi

Representem un polinomi mitjançant un diccionari de parelles (grau, coeficient) que només conté els coeficients diferents de zero. Per exemple, el polinomi \(p(x) = -x^5 + 7x^2 - 3\) es representa amb el diccionari següent:

p = {       # Polinomi p(x) = -x^5+7x^2-3
  0: -3,
  2: 7,
  5: -1
}

Dissenyeu la funció especificada a continuació i deseu-la al mòdul coefs_poli (fitxer coefs_poli.py):

coefs_poli.coeficients_polinomi(p)
Paràmetres:

p (dict) – polinomi representat com un diccionari de parelles (grau, coeficient no nul)

Retorna:

iterador infinit de les parelles (grau, coeficient) per tots els graus a partir de zero

Per exemple,


>>> p = {       # Polinomi p(x) = -x^5 + 7x^2 - 3
...   0: -3,
...   2: 7,
...   5: -1
... }
>>> c = coeficients_polinomi(p)
>>> c is iter(c) # c és un iterador
True
>>> list(itertools.islice(c, 7))
[(0, -3), (1, 0), (2, 7), (3, 0), (4, 0), (5, -1), (6, 0)]

>>> p = {       # Polinomi p(x) = -10x^4 - 5x^3 - 12x
...   1: 12,
...   3: -5,
...   4: -10
... }
>>> c = coeficients_polinomi(p)
>>> list(itertools.islice(c, 9))
[(0, 0), (1, 12), (2, 0), (3, -5), (4, -10), (5, 0), (6, 0), (7, 0), (8, 0)]

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