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:

  • l una llista no buida de int

  • i0 int

retorna la llista de posicions de l per les que es passa al anar ballant a partir de la posició i0 fins que:

  • o bé se surt del rang de l

  • o 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.