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 :mod:`salta` (fitxer :file:`salta.py`) facis la funció Python següent: :file:`salta(l, i0)` tal que *donats*: - ``l`` una llista no buida de :class:`int` - ``i0`` :class:`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: .. literalinclude:: salta_test.txt :language: python3 :start-after: --ini :end-before: --fi Disposes de doctests al fitxer :download:`salta_test.txt`.