haskell: 2023 main

This commit is contained in:
Maciej Jur 2023-12-04 23:55:27 +01:00
parent 86f7d3e6da
commit 96e84e4199
Signed by: kamov
GPG key ID: 191CBFF5F72ECAFD
3 changed files with 20 additions and 38 deletions

View file

@ -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.

View file

@ -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 ()

View file

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