Particiones por un elemento
Definir la función
particiones :: Eq a => [a] -> a -> [([a],[a])]
tal que (particiones xs y) es lalista delas particiones de xs en dos partes tales que el primer elemento de la segunda parte es y. Por ejemplo,
particiones [2,9,1,3,9,4] 9 == [([2],[9,1,3,9,4]),([2,9,1,3],[9,4])] particiones [2,9,1,3,9,4] 3 == [([2,9,1],[3,9,4])] particiones [2,9,1,3,9,4] 7 == [] particiones "Particiones" 'i' == [("Part","iciones"),("Partic","iones")]
Soluciones
particiones :: Eq a => [a] -> a -> [([a],[a])] particiones [] _ = [] particiones xs y | null vs = [] | otherwise = (us,vs) : [(us ++ y:us', vs') | (us',vs') <- particiones (tail vs) y ] where (us,vs) = span (/=y) xs