Listas decrecientes
Definir la función
listasDecrecientesDesde :: Int -> [[Int]]
tal que (listasDecrecientesDesde n) es la lista de las sucesiones estrictamente decrecientes cuyo primer elemento es n. Por ejemplo,
λ> listasDecrecientesDesde 2 [[2],[2,1],[2,1,0],[2,0]] λ> listasDecrecientesDesde 3 [[3],[3,2],[3,2,1],[3,2,1,0],[3,2,0],[3,1],[3,1,0],[3,0]]
Soluciones
-- 1ª solución listasDecrecientesDesde :: Int -> [[Int]] listasDecrecientesDesde 0 = [[0]] listasDecrecientesDesde n = [n] : [n:ys | m <- [n-1,n-2..0], ys <- listasDecrecientesDesde m] -- 2ª solución listasDecrecientesDesde2 :: Int -> [[Int]] listasDecrecientesDesde2 0 = [[0]] listasDecrecientesDesde2 n = [n] : [n:xs | m <- [0..n-1], xs <- listasDecrecientesDesde2 m]