summary refs log tree commit diff
path: root/2/1.hs
diff options
context:
space:
mode:
authortzlil <tzlils@protonmail.com>2023-12-02 14:09:07 +0200
committertzlil <tzlils@protonmail.com>2023-12-02 14:09:07 +0200
commitd7e41f1e93eac045329b6ea91ae150d517e443a3 (patch)
treeab37c65184098583ed03840712c0d0e0ca84dcc0 /2/1.hs
parent1552251e0ecf7915f682464eb3e71974ec41633d (diff)
a little nicer
Diffstat (limited to '2/1.hs')
-rw-r--r--2/1.hs6
1 files changed, 4 insertions, 2 deletions
diff --git a/2/1.hs b/2/1.hs
index 9151408..4f3a5ae 100644
--- a/2/1.hs
+++ b/2/1.hs
@@ -7,7 +7,7 @@ import Data.Maybe
 import qualified Data.Map as M
 import Control.Monad
 
-data Color = Red | Green | Blue deriving (Eq,Ord)
+data Color = Red | Green | Blue deriving (Show,Eq,Ord)
 type Handful = (Color, Int)
 type Set = M.Map Color Int
 type Game = (Int, [Set])
@@ -25,6 +25,8 @@ handful = space *> (flip (,) <$> read <$> many1 digit) <* space <*> color
 set = M.fromList <$> (sepBy handful $ string ",")
 game = string "Game " *> ((,) <$> read <$> many1 digit) <* string ":" <*> sepBy set (string ";")
 
+games = sepBy game newline
+
 solution :: Game -> Maybe Int
 solution (i,m) = do
     let m' = M.unionsWith max m
@@ -33,4 +35,4 @@ solution (i,m) = do
     guard $ M.findWithDefault 0 Blue m' <= 14
     return i
 
-main = head <$> getArgs >>= readFile >>= print . sum . catMaybes . map solution . catMaybes . map (either (const Nothing) Just . parse game "") <$> lines
\ No newline at end of file
+main = head <$> getArgs >>= readFile >>= print . sum . catMaybes . map solution . either (error.show) id . parse games ""
\ No newline at end of file