projects
/
advent-of-code-20.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Redone day 7 with the Graphite graph library
[advent-of-code-20.git]
/
advent19
/
src
/
advent19.hs
diff --git
a/advent19/src/advent19.hs
b/advent19/src/advent19.hs
index 01e872d01e998c41ec3778ff031b6e3236ba2e06..a1fd6ccd8b34d3a4211750fa2d2f5010d6882795 100644
(file)
--- a/
advent19/src/advent19.hs
+++ b/
advent19/src/advent19.hs
@@
-12,9
+12,7
@@
import Data.Either
data Rule = Letter Char
data Rule = Letter Char
- -- | Then2 Rule Rule
- -- | Then3 Rule Rule Rule
- | Then [Rule]
+ | Then [Rule]
| Or Rule Rule
| See Int
deriving (Show, Eq)
| Or Rule Rule
| See Int
deriving (Show, Eq)
@@
-29,7
+27,6
@@
main =
let (rules, messages) = parse inputP text
print $ part1 rules messages
print $ part2 rules messages
let (rules, messages) = parse inputP text
print $ part1 rules messages
print $ part2 rules messages
- -- print $ part2 text
setup fname =
do text <- readFile fname
setup fname =
do text <- readFile fname
@@
-66,6
+63,7
@@
makeParser m (See i) = makeParser m (m!i)
-- Parse the input
-- Parse the input
+inputP = (,) <$> rulesP <* blankLines <*> messagesP
rulesP = M.fromList <$> ruleP `sepBy` endOfLine
ruleP = (,) <$> decimal <* (string ": ") <*> ruleBodyP
rulesP = M.fromList <$> ruleP `sepBy` endOfLine
ruleP = (,) <$> decimal <* (string ": ") <*> ruleBodyP
@@
-76,9
+74,6
@@
orRuleP = Or <$> thenRuleP <* (string " | ") <*> thenRuleP
thenRuleP = Then <$> seeRuleP `sepBy` (string " ")
seeRuleP = See <$> decimal
thenRuleP = Then <$> seeRuleP `sepBy` (string " ")
seeRuleP = See <$> decimal
-
-inputP = (,) <$> rulesP <* blankLines <*> messagesP
-
messagesP = (munch1 isAlpha) `sepBy` endOfLine
blankLines = skipMany1 endOfLine
messagesP = (munch1 isAlpha) `sepBy` endOfLine
blankLines = skipMany1 endOfLine