3. Salta [2p]

Considerem una llista no buida d’enters on cada enter representa una posició de la mateixa llista. Definim el terme saltar sobre la llista des d’una posició i com anar a la posició l[i] (sempre que estigui dins el rang de l).

Per exemple, donada la llista l = [3, 2, 0, 1] i la posició inicial 3:

  • de la 3 saltem a la 1 (perquè l[3] és 1)

  • de la 1 saltem a la 2

  • de la 2 saltem a la 0

  • i de la 0 a la 3 i entra en bucle

Si la llista fos l = [4, 2, 0, 1] i la posició inicial 3, els salts serien els mateixos excepte que de la posició 0 saltaríem a la 4 que està fora del rang de l i acaba.

Es demana que al mòdul salta (fitxer salta.py) facis la funció Python següent:

salta(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 a l’anar saltant 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 a la llista l, sigui la que sigui.

Per exemple:


>>> l = [1, 2, 5, 11, 1, 10, 6, 4, 3, 8, 5]
>>> salta(l, 0)
[0, 1, 2, 5, 10, 5]
>>> salta(l, 6)
[6, 6]
>>> salta(l, 8)
[8, 3, 11]

Disposes de doctests al fitxer salta_test.txt.