10 lines
244 B
Haskell
10 lines
244 B
Haskell
import Data.List
|
|
|
|
poset = foldr (\x p -> p ++ map (x:) p) [[]]
|
|
|
|
ncsubs [] = [[]]
|
|
ncsubs (x:xs) = tail $ nc [x] xs
|
|
where
|
|
nc [_] [] = [[]]
|
|
nc (_:x:xs) [] = nc [x] xs
|
|
nc xs (y:ys) = (nc (xs++[y]) ys) ++ map (xs++) (tail $ poset ys)
|