diff options
Diffstat (limited to '')
-rw-r--r-- | 2022/22-Monkey-Map/first.hs | 11 | ||||
-rw-r--r-- | 2022/22-Monkey-Map/second.hs | 11 |
2 files changed, 8 insertions, 14 deletions
diff --git a/2022/22-Monkey-Map/first.hs b/2022/22-Monkey-Map/first.hs index a7f9385..913ba30 100644 --- a/2022/22-Monkey-Map/first.hs +++ b/2022/22-Monkey-Map/first.hs @@ -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 diff --git a/2022/22-Monkey-Map/second.hs b/2022/22-Monkey-Map/second.hs index 82752cd..33385dc 100644 --- a/2022/22-Monkey-Map/second.hs +++ b/2022/22-Monkey-Map/second.hs @@ -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 |