Los primeros al final
Definir la función
rota :: Int -> [a] -> [a]
tal que (rota n xs) es la lista obtenida poniendo los n primeros elementos de xs al final de la lista. Por ejemplo,
rota 1 [3,2,5,7] == [2,5,7,3] rota 2 [3,2,5,7] == [5,7,3,2] rota 3 [3,2,5,7] == [7,3,2,5]
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
Soluciones en Haskell
rota :: Int -> [a] -> [a] rota n xs = drop n xs ++ take n xs
El código se encuentra en GitHub.
Soluciones en Python
from typing import TypeVar A = TypeVar('A') def rota(n: int, xs: list[A]) -> list[A]: return xs[n:] + xs[:n]
El código se encuentra en GitHub.
Comentarios
- Los
nprimeros elementos de la listaxsse calcula - en Haskell, con
take n xsy - en Python, con
xs[n:]. - La lista
xssin susnprimeros elementos se calcula - en Haskell, con
drop n xsy - en Python, con
xs[:n].