parsing updates for 2022-22 in haskell

This commit is contained in:
Julien Dessaux 2023-12-25 23:47:01 +01:00
parent d00f52da65
commit 2d31ebe29e
Signed by: adyxax
GPG key ID: F92E51B86E07177E
2 changed files with 8 additions and 14 deletions

View file

@ -20,12 +20,12 @@ type Parser = Parsec Void String
parseMapLine :: Parser Line
parseMapLine = do
line <- some (char '.' <|> char ' ' <|> char '#') <* char '\n'
line <- some (char '.' <|> char ' ' <|> char '#') <* eol
return $ V.generate (length line) (line !!)
parseMap :: Parser Map
parseMap = do
lines <- some parseMapLine <* char '\n'
lines <- some parseMapLine <* eol
return $ V.generate (length lines) (lines !!)
parseInstruction :: Parser Instruction
@ -34,11 +34,8 @@ parseInstruction = (Move . read <$> some digitChar)
<|> (char 'R' $> R)
parseInput' :: Parser Input
parseInput' = do
m <- parseMap
i <- some parseInstruction
void $ optional (char '\n') <* eof
return $ Input m i
parseInput' = Input <$> parseMap
<*> some parseInstruction <* eol <* eof
parseInput :: String -> IO Input
parseInput filename = do

View file

@ -21,12 +21,12 @@ type Parser = Parsec Void String
parseMapLine :: Parser Line
parseMapLine = do
line <- some (char '.' <|> char ' ' <|> char '#') <* char '\n'
line <- some (char '.' <|> char ' ' <|> char '#') <* eol
return $ V.generate (length line) (line !!)
parseMap :: Parser Map
parseMap = do
lines <- some parseMapLine <* char '\n'
lines <- some parseMapLine <* eol
return $ V.generate (length lines) (lines !!)
parseInstruction :: Parser Instruction
@ -35,11 +35,8 @@ parseInstruction = (Move . read <$> some digitChar)
<|> (char 'R' $> R)
parseInput' :: Parser Input
parseInput' = do
m <- parseMap
i <- some parseInstruction
void $ optional (char '\n') <* eof
return $ Input m i
parseInput' = Input <$> parseMap
<*> some parseInstruction <* eol <* eof
parseInput :: String -> IO Input
parseInput filename = do