Definir la función
inserta :: a -> [[a]] -> [[[a]]] |
tal que (inserta x yss) es la lista obtenida insertando x en cada uno de los elementos de yss. Por ejemplo,
λ> inserta 1 [[2,3],[4],[5,6,7]] [[[1,2,3],[4],[5,6,7]],[[2,3],[1,4],[5,6,7]],[[2,3],[4],[1,5,6,7]]] λ> inserta 'a' ["hoy","es","lunes"] [["ahoy","es","lunes"],["hoy","aes","lunes"],["hoy","es","alunes"]] |
Soluciones
-- 1ª solución inserta :: a -> [[a]] -> [[[a]]] inserta _ [] = [] inserta x (ys:yss) = ((x:ys):yss) : [ys : zs | zs <- inserta x yss] -- 2ª solución inserta2 :: a -> [[a]] -> [[[a]]] inserta2 _ [] = [] inserta2 x (ys:yss) = ((x:ys):yss) : map (ys:) (inserta2 x yss) |
Pensamiento
… De la mar al percepto,
del percepto al concepto,
del concepto a la idea
— ¡oh, la linda tarea! —
de la idea a la mar.
¡Y otra vez al empezar!Antonio Machado
5 soluciones de “Inserciones en una lista de listas”