From 72a14842504e028edaefc697a7bdc957e9be1155 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Sat, 2 Dec 2023 13:30:30 +0100 Subject: Renaming --- 2023/1-Trebuchet/first.hs | 44 -------------------------------------------- 1 file changed, 44 deletions(-) delete mode 100644 2023/1-Trebuchet/first.hs (limited to '2023/1-Trebuchet/first.hs') diff --git a/2023/1-Trebuchet/first.hs b/2023/1-Trebuchet/first.hs deleted file mode 100644 index 366d28e..0000000 --- a/2023/1-Trebuchet/first.hs +++ /dev/null @@ -1,44 +0,0 @@ --- requires cabal install --lib megaparsec parser-combinators -module Main (main) where -import Control.Monad (void, when) -import Data.Char qualified as C -import Data.List qualified as L -import Data.Map qualified as M -import Data.Maybe -import Data.Set qualified as S -import Data.Void (Void) -import Text.Megaparsec -import Text.Megaparsec.Char - -exampleExpectedOutput = 142 - -type Input = [String] - -type Parser = Parsec Void String - -parseInput' :: Parser Input -parseInput' = some (some alphaNumChar <* eol) <* eof - -parseInput :: String -> IO Input -parseInput filename = do - input <- readFile filename - case runParser parseInput' filename input of - Left bundle -> error $ errorBundlePretty bundle - Right input' -> return input' - -process :: Int -> String -> Int -process acc str = acc + f * 10 + l - where - f = C.digitToInt . head $ dropWhile C.isLetter str - l = C.digitToInt . head . dropWhile C.isLetter $ reverse str - -compute :: Input -> Int -compute = L.foldl' process 0 - -main :: IO () -main = do - example <- parseInput "example" - let exampleOutput = compute example - when (exampleOutput /= exampleExpectedOutput) (error $ "example failed: got " ++ show exampleOutput ++ " instead of " ++ show exampleExpectedOutput) - input <- parseInput "input" - print $ compute input -- cgit v1.2.3