summary refs log tree commit diff
path: root/2
diff options
context:
space:
mode:
Diffstat (limited to '2')
-rw-r--r--2/1.hs5
-rw-r--r--2/2.hs7
2 files changed, 2 insertions, 10 deletions
diff --git a/2/1.hs b/2/1.hs
index 1073b72..726f95c 100644
--- a/2/1.hs
+++ b/2/1.hs
@@ -8,7 +8,6 @@ import qualified Data.Map as M
 import Control.Monad
 
 data Color = Red | Green | Blue deriving (Show,Eq,Ord)
-type Handful = (Color, Int)
 type Set = M.Map Color Int
 type Game = (Int, [Set])
 
@@ -16,10 +15,8 @@ red = string "red" *>  pure Red
 green = string "green" *>  pure Green
 blue = string "blue" *>  pure Blue
 
-color :: Parser Color
 color = red <|> green <|> blue 
 
-handful :: Parser Handful
 handful = liftM2 (flip (,)) (space *> (read <$> many1 digit)) (space *> color)
 
 set = M.fromList <$> (sepBy handful $ string ",")
@@ -35,4 +32,4 @@ solution (i,m) = do
     guard $ M.findWithDefault 0 Blue m' <= 14
     return i
 
-main = head <$> getArgs >>= readFile >>= print . sum . catMaybes . map solution . either (error.show) id . parse games ""
\ No newline at end of file
+main = liftM2 (>>=) readFile (((print . sum . catMaybes . map solution . either (error.show) id) .) . parse games) =<< head <$> getArgs
\ No newline at end of file
diff --git a/2/2.hs b/2/2.hs
index 3d26a35..ba01542 100644
--- a/2/2.hs
+++ b/2/2.hs
@@ -8,7 +8,6 @@ import qualified Data.Map as M
 import Control.Monad
 
 data Color = Red | Green | Blue deriving (Show,Eq,Ord)
-type Handful = (Color, Int)
 type Set = M.Map Color Int
 type Game = (Int, [Set])
 
@@ -16,10 +15,8 @@ red = string "red" *>  pure Red
 green = string "green" *>  pure Green
 blue = string "blue" *>  pure Blue
 
-color :: Parser Color
 color = red <|> green <|> blue 
 
-handful :: Parser Handful
 handful = liftM2 (flip (,)) (space *> (read <$> many1 digit)) (space *> color)
 
 set = M.fromList <$> (sepBy handful $ string ",")
@@ -30,6 +27,4 @@ games = sepBy game newline
 solution :: Game -> Int
 solution = product . M.elems . M.unionsWith max . snd
 
-main = head <$> getArgs >>= \a -> do
-    r <- readFile a
-    print $ sum $ map solution $ either (error.show) id $ parse games a r
\ No newline at end of file
+main = liftM2 (>>=) readFile (((print . sum . map solution . either (error.show) id) .) . parse games) =<< head <$> getArgs
\ No newline at end of file