13 lines
421 B
Haskell
13 lines
421 B
Haskell
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
|