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

15 lines
304 B
Haskell
Raw Permalink Normal View History

2013-04-10 23:57:08 -07:00
import Data.List (inits, tails)
2013-06-05 21:47:54 +00:00
subseqs = foldr (\x s -> [x] : map (x:) s ++ s) []
2013-04-10 23:57:08 -07:00
2013-06-05 21:47:54 +00:00
consecs = concatMap (tail.inits) . tails
2013-04-10 23:57:08 -07:00
minus [] [] = []
minus (a:as) bb@(b:bs)
| a == b = minus as bs
| otherwise = a:minus as bb
disjoint s = (subseqs s) `minus` (consecs s)
main = mapM_ print $ disjoint [1..4]