day 1: rewrite parse

Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
This commit is contained in:
2024-12-02 19:33:23 +05:30
parent 4a1ab47f3a
commit 9251a1facf

View File

@@ -1,21 +1,23 @@
module Main where module Main where
import qualified AoC as A (count, extract) import qualified AoC as A (count, extract)
import Control.Monad (void)
import Data.List (sort) import Data.List (sort)
import Text.Parsec (digit, many1, newline, parse, space, try) import Text.Parsec (digit, eof, many1, newline, parse, sepEndBy1, space, try, (<|>))
import Text.Parsec.String (Parser) import Text.Parsec.String (Parser)
parseLists :: Parser ([Int], [Int]) parseLists :: Parser ([Int], [Int])
parseLists = parseLists =
unzip unzip
-- multiple lines -- multiple lines
<$> many1 <$> sepEndBy1
( (,) ( (,)
-- first number -- first number
<$> (read <$> many1 digit) <$> (read <$> many1 digit)
-- second number -- second number
<*> (many1 space *> (read <$> many1 digit) <* try newline) <*> (many1 space *> (read <$> many1 digit))
) )
newline
part1 :: [Int] -> [Int] -> Int part1 :: [Int] -> [Int] -> Int
part1 xs ys = sum $ zipWith ((abs .) . (-)) xs ys part1 xs ys = sum $ zipWith ((abs .) . (-)) xs ys