Files
adventofcode24/day-07-haskell/app/Main.hs

36 lines
958 B
Haskell

module Main (main) where
import System.Environment.Blank ( getArgs )
import Common
import Task1 (task1)
import Task2 (task2)
main :: IO ()
main = do
args <- getArgs
case args of
["1", file] -> do
equations <- readEquationsFromFile file
print $ task1 equations
["2", file] -> do
equations <- readEquationsFromFile file
print $ task2 equations
_ -> error "Usage: <1|2> <input file>"
readEquationsFromFile :: String -> IO [Equation]
readEquationsFromFile file = do
content <- readFile file
return $ map parseLine $ lines content
parseLine :: String -> Equation
parseLine line = fromWords $ words line
where
fromWords :: [String] -> Equation
fromWords (firstWord:args) = (read $ reverse $ dropFirst $ reverse firstWord, map read args)
where
dropFirst :: String -> String
dropFirst (_:xs) = xs
dropFirst x = x
fromWords parts = error $ "Illegal line: " ++ unwords parts