aboutsummaryrefslogtreecommitdiff
path: root/execs/Day14.hs
diff options
context:
space:
mode:
Diffstat (limited to 'execs/Day14.hs')
-rw-r--r--execs/Day14.hs9
1 files changed, 5 insertions, 4 deletions
diff --git a/execs/Day14.hs b/execs/Day14.hs
index d82424a..7f4368a 100644
--- a/execs/Day14.hs
+++ b/execs/Day14.hs
@@ -5,6 +5,7 @@ import Text.ParserCombinators.Parsec
5import Text.Parsec.Char 5import Text.Parsec.Char
6import Data.Either 6import Data.Either
7import Data.Char 7import Data.Char
8import Data.Bifunctor (bimap)
8import Data.Strings 9import Data.Strings
9import Numeric (showIntAtBase, readInt) 10import Numeric (showIntAtBase, readInt)
10import Data.Map (Map) 11import Data.Map (Map)
@@ -15,11 +16,11 @@ data Stmt = Mask String | Mem Int Int deriving Show
15parseMask :: Parser Stmt 16parseMask :: Parser Stmt
16parseMask = string "mask = " >> Mask <$> many anyChar 17parseMask = string "mask = " >> Mask <$> many anyChar
17 18
19parseNumber :: Parser Int
20parseNumber = read <$> many1 digit
21
18parseMem :: Parser Stmt 22parseMem :: Parser Stmt
19parseMem = do 23parseMem = Mem <$ string "mem[" <*> parseNumber <* string "] = " <*> parseNumber
20 one <- string "mem[" >> many1 digit
21 two <- string "] = " >> many1 digit
22 return $ Mem (read one) (read two)
23 24
24parseLine :: Parser Stmt 25parseLine :: Parser Stmt
25parseLine = try parseMask <|> parseMem 26parseLine = try parseMask <|> parseMem