Skip to content
This repository was archived by the owner on Nov 17, 2024. It is now read-only.

Commit e1a6e45

Browse files
committed
day 16 with type sigs
1 parent 6ed120c commit e1a6e45

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

β€Žsrc/AOC/Challenge/Day16.hsβ€Ž

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,19 @@ parsePacket = do
106106
_ -> empty
107107
bitToNumP :: [Bool] -> Parser Int
108108
bitToNumP = maybeAlt . bitToNum
109+
parseLiteral :: Parser (Int, Int)
109110
parseLiteral = do
110111
n <- parseLitChunks
111112
pn <- bitToNumP (concat n)
112113
pure (length n * 5, pn)
114+
parseLitChunks :: Parser [[Bool]]
113115
parseLitChunks = do
114116
goOn <- P.anySingle
115117
digs <- replicateM 4 P.anySingle
116118
if goOn
117119
then (digs:) <$> parseLitChunks
118120
else pure [digs]
121+
parseOperator :: Parser (Int, [Packet])
119122
parseOperator = do
120123
lt <- P.anySingle
121124
if lt
@@ -126,6 +129,7 @@ parsePacket = do
126129
else do
127130
n <- bitToNumP =<< replicateM 15 P.anySingle
128131
(n+1+15,) <$> parsePacketsLength n
132+
parsePacketsLength :: Int -> Parser [Packet]
129133
parsePacketsLength n = do
130134
(ln, p) <- parsePacket
131135
if ln == n

0 commit comments

Comments
Β (0)