summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Day1.idr13
-rw-r--r--src/Main.idr22
2 files changed, 29 insertions, 6 deletions
diff --git a/src/Day1.idr b/src/Day1.idr
index 96cf777..e29b0a7 100644
--- a/src/Day1.idr
+++ b/src/Day1.idr
@@ -27,9 +27,10 @@ occur x fs = foldr (\y => \r => if x == y then r + 1 else r) 0 fs
part2 : (List Int, List Int) -> Int
part2 (l1, l2) = sum $ map (\x => x * (occur x l2)) l1
-main : IO ()
-main = do
- estr <- readFile "data/day1.txt"
- str <- either (die . show) pure estr
- putStrLn $ show $ part1 $ unzip $ parseStr str
- putStrLn $ show $ part2 $ unzip $ parseStr str
+export
+sol1 : String -> String
+sol1 = show . part1 . unzip . parseStr
+
+export
+sol2 : String -> String
+sol2 = show . part2 . unzip . parseStr
diff --git a/src/Main.idr b/src/Main.idr
new file mode 100644
index 0000000..e2faf59
--- /dev/null
+++ b/src/Main.idr
@@ -0,0 +1,22 @@
+module Main
+
+import Day1
+import System
+import System.File
+import Data.Fin
+import Data.String
+
+runDay : Int -> String -> String
+runDay n inp = case n of
+ 1 => unlines [Day1.sol1 inp, Day1.sol2 inp]
+ _ => "Not implemented yet!"
+
+main : IO ()
+main = do
+ args <- getArgs
+ digit <- maybe (die "Usage: aoc <daynumber>") pure $ getAt 1 args
+ num <- maybe (die "Usage: aoc <daynumber>") pure (parseInteger digit)
+ einp <- readFile ("./data/day" ++ (show num) ++ ".txt")
+ inp <- either (const $ die "Not implemented yet!") pure einp
+ putStrLn $ runDay num inp
+ pure ()