3. Balla [2p]¶
Considerem una llista no buida d’enters. Definim el terme ballar sobre la llista des d’una posició i vàlida de l com anar a la posició i+l[i].
Per exemple, donada la llista l = [3, 1, -2, -2] i la posició inicial 3:
de la 3 balla cap a la 1 (perquè 3+l[3] és 3-2 que és 1)
de la 1 a la 2
de la 2 a la 0
i de la 0 a la 3 i entrem en bucle
Si la llista fos l = [4, 1, -2, -2] i la posició inicial 3 els salts serien els mateixos excepte que de la posició 0 ballaria cap a la 4 que està fora del rang de l i acabaríem.
Es demana que al mòdul balla (fitxer balla.py) facis la funció Python següent:
balla(l, i0)tal que donats:
retorna la llista de posicions de
lper les que es passa al anar ballant a partir de la posiciói0fins que:
o bé se surt del rang de
lo bé s’arriba a una posició per la que ja s’ha passat
Aquesta darrera posició també ha d’estar inclosa encara que estigui fora de rang.
Per exemple:
>>> l = [5, 2, 4, -1, 6, -3, 1, -7] >>> balla(l, 0) [0, 5, 2, 6, 7, 0] >>> balla(l, 4) [4, 10] >>> balla(l, 10) [10]
Disposes de doctests al fitxer balla_test.txt.