Menu Close

Día: 17 de agosto de 2022

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 n primeros elementos de la lista xs se calcula
+ en Haskell, con take n xs y
+ en Python, con xs[n:].
+ La lista xs sin sus n primeros elementos se calcula
+ en Haskell, con drop n xs y
+ en Python, con xs[:n].