RosettaCodeData/Task/Non-continuous-subsequences/Haskell/non-continuous-subsequences...

9 lines
274 B
Haskell

import Data.List (subsequences, tails, delete)
disjoint a = concatMap (cutAt a) [1..length a - 2] where
cutAt s n = [a ++ b | b <- delete [] (subsequences right),
a <- init (tails left) ] where
(left, _:right) = splitAt n s
main = print $ length $ disjoint [1..20]