From 9f4a26f9188f74aa6869583ab991b4b8eccbb0b7 Mon Sep 17 00:00:00 2001 From: Crazazy Date: Sun, 1 Dec 2024 11:20:14 +0100 Subject: initial commit why does this take so long ;_; --- src/Day1.idr | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/Day1.idr (limited to 'src/Day1.idr') diff --git a/src/Day1.idr b/src/Day1.idr new file mode 100644 index 0000000..12e9217 --- /dev/null +++ b/src/Day1.idr @@ -0,0 +1,30 @@ +module Day1 + +import System +import System.File +import Data.String +import Text.Parser + +parsePair : String -> Maybe (Int, Int) +parsePair pair = do + num1 <- parseInteger (fst p1) + num2 <- parseInteger (snd p2) + pure (num1, num2) where + p1 = span (/= ' ') pair + p2 = span (== ' ') (snd p1) + +parseStr : String -> List (Int, Int) +parseStr str = do + nums <- lines str + maybe [] pure (parsePair nums) + +transposePairs : List (a, b) -> (List a, List b) +transposePairs [] = ([], []) +transposePairs (x :: xs) = ((fst x) :: (fst rest), (snd x) :: (snd rest)) where + rest = transposePairs xs + +main : IO () +main = do + estr <- readFile "data/day1.txt" + str <- either (die . show) pure estr + putStrLn $ show $ transposePairs $ parseStr str -- cgit 1.4.1-2-gfad0