Tweaked some parsing code
[advent-of-code-21.git] / advent24 / Main.hs
index 2b85e46eebd9172b6f7d9d94c4b9e265d86e8a4b..e1836b22ca9cdf012344a6c3e60bd730d22c17d1 100644 (file)
@@ -1,15 +1,15 @@
--- Writeup at https://work.njae.me.uk/2021/12/29/advent-of-code-2021-day-24/
+-- Writeup at https://work.njae.me.uk/2022/04/23/advent-of-code-2021-day-24/
 -- Based on ideas by Daniel Lin, 
 --   taken from https://github.com/ephemient/aoc2021/blob/main/hs/src/Day24.hs
 
-import Debug.Trace
+-- import Debug.Trace
 
 import Data.Text (Text)
 import qualified Data.Text.IO as TIO
 import Data.Attoparsec.Text -- hiding (take, takeWhile)
 import Control.Applicative
-import qualified Data.Map as M
-import Data.Map ((!))
+import qualified Data.Map.Strict as M
+import Data.Map.Strict ((!))
 import Data.List
 import Control.Monad
 import Data.Maybe
@@ -217,10 +217,10 @@ eqlP = Eql <$> ("eql " *> registerP) <*> (" " *> argumentP)
 
 registerP, wP, xP, yP, zP :: Parser Register
 registerP = choice [wP, xP, yP, zP]
-wP = "w" *> pure W
-xP = "x" *> pure X
-yP = "y" *> pure Y
-zP = "z" *> pure Z
+wP = W <$ "w"
+xP = X <$ "x"
+yP = Y <$ "y"
+zP = Z <$ "z"
 
 argumentP :: Parser Argument
 argumentP = (Reg <$> registerP) <|> (Lit <$> signed decimal)