From b499ed76f85c0384ecae9922128188717f0d3631 Mon Sep 17 00:00:00 2001 From: Joe Zhao Date: Sun, 22 Feb 2015 21:29:20 +0800 Subject: +p9 --- p9.hs | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 p9.hs diff --git a/p9.hs b/p9.hs new file mode 100644 index 0000000..b190491 --- /dev/null +++ b/p9.hs @@ -0,0 +1,13 @@ +pack :: (Eq a) => [a] -> [[a]] +pack = foldr elim [] + where elim e [] = [[e]] + elim e p@(n:ns) + | e == head n = (e:n):ns + | otherwise = [e]:p + +pack' (x:xs) = let (first,rest) = span (==x) xs + in (x:first) : pack' rest +pack' [] = [] + +pack'' (x:xs) = (x:takeWhile (==x) xs):(pack'' $ dropWhile (==x) xs) +pack'' [] = [] -- cgit v1.2.3-70-g09d2