99-haskell-problems

commit 79e348b55683fe6ca895ab8e9cd479cba5f41947

tree

parent:
b74e42d8ba93664966cd726cdd7be6df4fcd23fe

Nick Mykins <nickmykins@transfix.io>

2018-02-02T14:27:20-05:00

rename OneOrMany

diff --git a/99_problems.hs b/99_problems.hs
index 59c7e76219e123f556eeed2f69c6ca21f2d6baf6..202f90bc70bd0635b0f7e8ad3a00b4287070ce45 100644
--- a/99_problems.hs
+++ b/99_problems.hs
@@ -93,16 +93,16 @@ encode = map (\l -> (length l, head l)) . pack
 
 
 -- 11. Encode runs of identical elements into custom data type
-data OneOrMany a = Multiple Int a | Single a deriving Show
+data RunOf a = Multiple Int a | Single a deriving Show
 
-encodeModified :: Eq a => [a] -> [OneOrMany a]
+encodeModified :: Eq a => [a] -> [RunOf a]
 encodeModified = map (\l -> if length l == 1
                             then Single $ head l
                             else Multiple (length l) (head l)) . pack
 
 
 -- 12. Decode a run-length encoded list
-decodeModified :: Eq a => [OneOrMany a] -> [a]
+decodeModified :: Eq a => [RunOf a] -> [a]
 decodeModified [] = []
 decodeModified [Single x] = [x]
 decodeModified [Multiple n x] = take n $ repeat x
@@ -110,7 +110,7 @@ decodeModified (x:xs) = (decodeModified [x]) ++ (decodeModified xs)
 
 
 -- 13. Directly run-length encode a list without creating sublists
-encodeDirect :: Eq a => [a] -> [OneOrMany a]
+encodeDirect :: Eq a => [a] -> [RunOf a]
 encodeDirect [] = []
 encodeDirect (x:xs) =
     let run = span (== x) xs
@@ -140,7 +140,7 @@
 -- 17. Split a list into two parts, given the length of the first part
 split :: [a] -> Int -> ([a], [a])
 split list n = (leftSplit enumerated, rightSplit enumerated)
-    where enumerated = [x | x <- zip list [1..]]
+    where enumerated = zip list [1..]
           leftSplit  = map fst . takeWhile ((<= n) . snd)
           rightSplit = map fst . dropWhile ((<= n) . snd)