X-Git-Url: https://git.njae.me.uk/?p=advent-of-code-20.git;a=blobdiff_plain;f=advent19%2Fsrc%2Fadvent19atto.hs;fp=advent19%2Fsrc%2Fadvent19atto.hs;h=621040652ca7d2fff6ec3e6315efd5265806c990;hp=b322324de0b9d2c3622f27cbd519f56946be10ab;hb=ffd4e09b86e7edb1694e9a88feaa67b4abef4890;hpb=cc6239892b5dea639d6787a53bffef90a5cf2841 diff --git a/advent19/src/advent19atto.hs b/advent19/src/advent19atto.hs index b322324..6210406 100644 --- a/advent19/src/advent19atto.hs +++ b/advent19/src/advent19atto.hs @@ -17,33 +17,26 @@ import Data.Either data Rule = Letter Char - -- | Then2 Rule Rule - -- | Then3 Rule Rule Rule | Then [Rule] | Or Rule Rule | See Int deriving (Show, Eq) --- data Tree = TEmpty --- | TLetter Char --- | TThen [Tree] --- deriving (Show, Eq) - type RuleSet = M.IntMap Rule main :: IO () main = - do text <- TIO.readFile "data/advent19b.txt" + do text <- TIO.readFile "data/advent19.txt" -- print text let (rules, messages) = successfulParse inputP text let messagesT = map T.pack messages - -- print rules - -- print messages + -- TIO.writeFile "rules19.atto.txt" $ T.pack $ show rules + print $ length rules + print $ length messages print $ part1 rules messagesT print $ part2 rules messagesT - -- print $ part2 text setup fname = do text <- TIO.readFile fname @@ -73,8 +66,8 @@ countMatches rules messages makeParser :: RuleSet -> Rule -> Parser () makeParser m (Letter c) = void $ char c -makeParser m (Then rs) = mapM_ (makeParser m) rs -makeParser m (Or a b) = (makeParser m a) <|> (makeParser m b) +makeParser m (Then rs) = mapM_ (\r -> try (makeParser m r)) rs +makeParser m (Or a b) = (try (makeParser m a)) <|> (makeParser m b) makeParser m (See i) = makeParser m (m!i)