data Rule = Letter Char
- -- | Then2 Rule Rule
- -- | Then3 Rule Rule Rule
- | Then [Rule]
+ | Then [Rule]
| Or Rule Rule
| See Int
deriving (Show, Eq)
let (rules, messages) = parse inputP text
print $ part1 rules messages
print $ part2 rules messages
- -- print $ part2 text
setup fname =
do text <- readFile fname
-- Parse the input
+inputP = (,) <$> rulesP <* blankLines <*> messagesP
rulesP = M.fromList <$> ruleP `sepBy` endOfLine
ruleP = (,) <$> decimal <* (string ": ") <*> ruleBodyP
thenRuleP = Then <$> seeRuleP `sepBy` (string " ")
seeRuleP = See <$> decimal
-
-inputP = (,) <$> rulesP <* blankLines <*> messagesP
-
messagesP = (munch1 isAlpha) `sepBy` endOfLine
blankLines = skipMany1 endOfLine