Day 3
This commit is contained in:
parent
9d1ecddf7b
commit
97595af8de
@ -7,5 +7,4 @@ listDistance xs ys = sum $ map abs $ zipWith (-) (sort xs) (sort ys)
|
||||
main = do
|
||||
contents <- lines <$> readFile "day1.txt"
|
||||
let [x, y] = transpose $ map read . words <$> contents
|
||||
distance = listDistance x y
|
||||
print distance
|
||||
print $ listDistance x y
|
||||
|
@ -8,5 +8,4 @@ similarityScore xs ys = let elemsY = [ (head y, length y) | y <- (group . sort)
|
||||
main = do
|
||||
contents <- lines <$> readFile "day1.txt"
|
||||
let [x, y] = transpose $ map read . words <$> contents
|
||||
score = similarityScore x y
|
||||
print score
|
||||
print $ similarityScore x y
|
||||
|
@ -10,5 +10,4 @@ isSafe xs = (isAscending xs || isDescending xs) && maximum distances <= 3 && min
|
||||
main = do
|
||||
contents <- lines <$> readFile "day2.txt"
|
||||
let reports = map read . words <$> contents
|
||||
safeCount = length $ filter isSafe reports
|
||||
print safeCount
|
||||
print . length $ filter isSafe reports
|
||||
|
@ -15,5 +15,4 @@ removeLevel xs = zipWith (++) ys zs
|
||||
main = do
|
||||
contents <- lines <$> readFile "day2.txt"
|
||||
let reports = map read . words <$> contents
|
||||
safeCount = length . filter (any isSafe) $ map removeLevel reports
|
||||
print safeCount
|
||||
print . length . filter (any isSafe) $ map removeLevel reports
|
||||
|
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
|
Loading…
x
Reference in New Issue
Block a user