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 Day03
Day04 Day04
-- Modules included in this library but not exported.
-- other-modules: -- other-modules:
-- LANGUAGE extensions used by modules in this package. -- LANGUAGE extensions used by modules in this package.

View file

@ -1,5 +1,6 @@
module Main where module Main where
import Data.Text (Text)
import Utils (readInput) import Utils (readInput)
import qualified Day01 import qualified Day01
import qualified Day02 import qualified Day02
@ -7,43 +8,25 @@ import qualified Day03
import qualified Day04 import qualified Day04
day01 :: IO () run :: (Show b, Show c)
day01 = do => Int
input <- Day01.parse <$> readInput 1 -> (Text -> Either String a)
print . Day01.solveA $ input -> (a -> b)
print . Day01.solveB $ input -> (a -> c)
-> IO ()
day02 :: IO () run day parse solveA solveB = do
day02 = do text <- readInput day
text <- readInput 2 case parse text of
case Day02.parse text of
Left err -> putStrLn err Left err -> putStrLn err
Right xd -> do Right re -> do
print . Day02.solveA $ xd putStrLn $ "Day " <> show day
print . Day02.solveB $ xd print . solveA $ re
print . solveB $ re
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
main :: IO () main :: IO ()
main = do main = do
-- day01 run 1 Day01.parse Day01.solveA Day01.solveB
-- day02 run 2 Day02.parse Day02.solveA Day02.solveB
-- day03 run 3 Day03.parse Day03.solveA Day03.solveB
day04 run 4 Day04.parse Day04.solveA Day04.solveB
pure () pure ()

View file

@ -7,8 +7,8 @@ import Data.Char (isDigit)
import Data.Maybe (mapMaybe, listToMaybe) import Data.Maybe (mapMaybe, listToMaybe)
parse :: Text -> [Text] parse :: Text -> Either String [Text]
parse = T.lines parse = Right . T.lines
merge :: [Int] -> Int merge :: [Int] -> Int
merge xs = 10 * head xs + last xs merge xs = 10 * head xs + last xs