Non-continuous subsequences: Difference between revisions

m
m (→‎{{header|REXX}}: added a comment, added whitespace. -- ~~~~)
Line 715:
 
A disjointed subsequence is a consecutive subsequence followed by a gap, then by any nonempty subsequence to its right:
<lang haskell>import Data.List (subsequences, tails, delete)
 
disjoint a = concat $ mapconcatMap (cutAt a) [1..length a - 2] where
cutAt s n = [a ++ b | b <- filterdelete (not . null)[] (subsequences right),
a <- init (tails left) ] where
(left, (r_:right)) = splitAt n s
tails s@(a:as) = s : if null as then [] else tails as
 
main = print $ length $ disjoint [1..20]</lang>
Anonymous user