Haskell variant for day seven

This commit is contained in:
2024-12-07 14:55:33 +01:00
parent 79e5c9069e
commit 8286304531
12 changed files with 284 additions and 0 deletions

View 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