This commit is contained in:
2024-12-03 18:52:51 +01:00
parent 9d1ecddf7b
commit 97595af8de
6 changed files with 32 additions and 8 deletions

12
Day3/puzzle1.hs Normal file
View File

@ -0,0 +1,12 @@
import Data.List.Split (splitOn)
import Data.Char (isDigit)
import Text.Regex.TDFA (getAllTextMatches, (=~))
sumMul :: [String] -> Int
sumMul xs = let vals = map (splitOn "," . filter (`elem` "0123456789,")) xs
in sum $ map (product . map read) vals
main = do
contents <- readFile "day3.txt"
let mults = getAllTextMatches (contents =~ "mul\\([0-9]+,[0-9]+\\)") :: [String]
print $ sumMul mults

16
Day3/puzzle2.hs Normal file
View File

@ -0,0 +1,16 @@
import Data.List (isPrefixOf)
import Data.List.Split (split, splitOn, startsWith)
import Data.Char (isDigit)
import Text.Regex.TDFA (getAllTextMatches, (=~))
sumMul :: [String] -> Int
sumMul xs = let vals = map (splitOn "," . filter (`elem` "0123456789,")) xs
in sum $ map (product . map read) vals
filterDonts :: [String] -> String
filterDonts = concat . filter (not . isPrefixOf "don't()") . concatMap (split (startsWith "do()"))
main = do
contents <- split (startsWith "don't()") <$> readFile "day3.txt"
let mults = getAllTextMatches (filterDonts contents =~ "mul\\([0-9]+,[0-9]+\\)") :: [String]
print $ sumMul mults