Haskell variant for day seven
This commit is contained in:
35
day-07-haskell/app/Main.hs
Normal file
35
day-07-haskell/app/Main.hs
Normal file
@@ -0,0 +1,35 @@
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user