Day 3
This commit is contained in:
12
Day3/puzzle1.hs
Normal file
12
Day3/puzzle1.hs
Normal 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
16
Day3/puzzle2.hs
Normal 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
|
Reference in New Issue
Block a user