Seqüències d'enters *(5 punts)* =============================== .. module:: seqint .. warning:: Per a resoldre aquest exercici **no es poden fer servir llistes**, tuples, diccionaris ni cap altra estructura de dades **per a desar els elements d'un iterador**. .. Es té una seqüència d'enters, organitzada amb subseqüències d'enters acabades amb l'enter -1, En aquest exercici treballarem un iterador que lliura enters que estan organitzats com a subseqüencies de xifres (enters entre 0 i 9) i que acaben en -1. És a dir, totes les xifres lliurades abans d'arribar al valor -1 formen una subseqüència de xifres. Per exemple, un iterador que lliuri la següent seqüència o seguit d'enters:: 6 3 -1 1 2 3 4 5 -1 -1 té tres subseqüències de xifres. La darrera és buida, i les dues primeres són:: 6 3 1 2 3 4 5 La funció que demanem a continuació agafarà com a paràmetre un iterador com el que hem descrit, i tornarà un generador que lliurarà un enter per cada subseqüència de xifres donada pel paràmetre iterador. En l'exemple anterior de les tres subseqüències, el generador resultant lliurarà els tres enters:: 63 12345 0 L'enter 63 s'ha determinat fent:: n=0 abans de començar l'obtenció de xifres, n=6 aplicant 10*n+6 quan obtenim 6, n=63 aplicant 10*n+3 quan obtenim 3, podem dir que el nombre calculat és 63 (darrer valor de n) quan obtenim -1. Es demana que, en un fitxer anomenat :file:`seqint.py`, hi deseu la funció generadora especificada a continuació: .. function:: seqint(it) :param it: iterador sobre una seqüència d'enters organitzada com a subseqüències :math:`s_i` de xifres (:math:`0\ldots 9`) finalitzades cadascuna amb l'enter -1 (:math:`i\ge 0`). Com a mínim la seqüència té l'enter -1 :return: iterador que genera un enter :math:`e_i` per cada subseqüència :math:`s_i` de xifres d'**it**. Si la subsequència :math:`s_i` està formada per la seqüència de xifres :math:`x_0x_1\ldots x_{f-1}` acabada amb :math:`x_f = -1`, el valor de l'enter :math:`e_i` s'obté aplicant el següent càlcul sobre les xifres :math:`x_0x_1\ldots x_{f-1}` de la subseqüència :math:`s_i`: :math:`n_0 = 0` :math:`n_j = n_{j - 1} \times 10 + x_j` :math:`\quad\forall j: 0 \le j \le f - 1` :math:`e_i = n_{f-1}` Per exemple: .. literalinclude:: tests-seqint.txt :language: python :start-after: --ini-enunciat :end-before: --fi-enunciat Disposeu d'un joc de proves més complet en el fitxer :download:`tests-seqint.txt`