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> " 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