1. Balla [4p]¶
Avís
Per a resoldre aquest exercici no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements d’un iterador.
Definim el terme ballar sobre una llista d’enters L des d’una posició vàlida i com anar a la posició i+L[i].
Per exemple, donada la llista L = [3, 1, -2, -2] i una posició inicial 3:
de la 3 balla cap a la 1 (perquè 3+L[3] és 3-2 que és 1)
de la 1 balla cap a la 2
de la 2 balla cap a la 0
de la 0 balla cap a la 3 i entra en bucle infinit.
Si la llista fos L = [3, 1, -3, -2] i la posició inicial 3, el «ball» seria igual excepte que de la posició 3 ballaria cap a la -1 que considerem fora de rang i acaba.
Igualment, si L = [4, 1, -2, -2] i posició inicial 3 de la 2 ballaria a la 0 i d’aquesta a la 4 que també és fora de rang.
Es demana que al mòdul balla (fitxer balla.py) facis funció generadora especificada a continuació:
- balla.balla(L, i0)¶
Per exemple:
>>> it = balla([3, 2, 3, -1, 7, -4], 0)
>>> next(it)
0
>>> next(it)
3
>>> next(it)
2
>>> next(it)
5
>>> it = balla([3, 2, 3, -1, 7, 1], 0)
>>> it == iter(it)
True
>>> list(it)
[0, 3, 2, 5]
Disposeu d’un joc de proves més complet en el fitxer tests-balla.txt