Ir al contenido principal

Partición por longitudes

Definir la función

particion :: [a] -> [Int] -> [[a]]

tal que (particion xs ns) es la partición de xs donde la longitud de cada parte está determinada por los elementos de ns. Por ejemplo,

particion [1..10] [2,5,0,3]  ==  [[1,2],[3,4,5,6,7],[],[8,9,10]]
particion [1..10] [1,4,2,3]  ==  [[1],[2,3,4,5],[6,7],[8,9,10]]

Soluciones

particion :: [a] -> [Int] -> [[a]]
particion [] []     = []
particion xs (n:ns) = take n xs : particion (drop n xs) ns