haskell: 2023 main
This commit is contained in:
parent
86f7d3e6da
commit
96e84e4199
|
@ -23,7 +23,6 @@ library
|
|||
Day03
|
||||
Day04
|
||||
|
||||
-- Modules included in this library but not exported.
|
||||
-- other-modules:
|
||||
|
||||
-- LANGUAGE extensions used by modules in this package.
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
module Main where
|
||||
|
||||
import Data.Text (Text)
|
||||
import Utils (readInput)
|
||||
import qualified Day01
|
||||
import qualified Day02
|
||||
|
@ -7,43 +8,25 @@ import qualified Day03
|
|||
import qualified Day04
|
||||
|
||||
|
||||
day01 :: IO ()
|
||||
day01 = do
|
||||
input <- Day01.parse <$> readInput 1
|
||||
print . Day01.solveA $ input
|
||||
print . Day01.solveB $ input
|
||||
|
||||
day02 :: IO ()
|
||||
day02 = do
|
||||
text <- readInput 2
|
||||
case Day02.parse text of
|
||||
run :: (Show b, Show c)
|
||||
=> Int
|
||||
-> (Text -> Either String a)
|
||||
-> (a -> b)
|
||||
-> (a -> c)
|
||||
-> IO ()
|
||||
run day parse solveA solveB = do
|
||||
text <- readInput day
|
||||
case parse text of
|
||||
Left err -> putStrLn err
|
||||
Right xd -> do
|
||||
print . Day02.solveA $ xd
|
||||
print . Day02.solveB $ xd
|
||||
|
||||
day03 :: IO ()
|
||||
day03 = do
|
||||
text <- readInput 3
|
||||
case Day03.parse text of
|
||||
Left err -> putStrLn err
|
||||
Right xd -> do
|
||||
print . Day03.solveA $ xd
|
||||
print . Day03.solveB $ xd
|
||||
|
||||
day04 :: IO ()
|
||||
day04 = do
|
||||
text <- readInput 4
|
||||
case Day04.parse text of
|
||||
Left err -> putStrLn err
|
||||
Right xd -> do
|
||||
print . Day04.solveA $ xd
|
||||
print . Day04.solveB $ xd
|
||||
Right re -> do
|
||||
putStrLn $ "Day " <> show day
|
||||
print . solveA $ re
|
||||
print . solveB $ re
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
-- day01
|
||||
-- day02
|
||||
-- day03
|
||||
day04
|
||||
run 1 Day01.parse Day01.solveA Day01.solveB
|
||||
run 2 Day02.parse Day02.solveA Day02.solveB
|
||||
run 3 Day03.parse Day03.solveA Day03.solveB
|
||||
run 4 Day04.parse Day04.solveA Day04.solveB
|
||||
pure ()
|
||||
|
|
|
@ -7,8 +7,8 @@ import Data.Char (isDigit)
|
|||
import Data.Maybe (mapMaybe, listToMaybe)
|
||||
|
||||
|
||||
parse :: Text -> [Text]
|
||||
parse = T.lines
|
||||
parse :: Text -> Either String [Text]
|
||||
parse = Right . T.lines
|
||||
|
||||
merge :: [Int] -> Int
|
||||
merge xs = 10 * head xs + last xs
|
||||
|
|
Loading…
Reference in a new issue