X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=advent04%2FMain.hs;h=537d7c6754a8c0a4c5fc839d4c331735030f8f38;hb=60c87f7de7b78d8f1d9c375daa7593a1ffbd3eee;hp=456b157c6af47a8eda8d32d7b6bbace22c1b2540;hpb=b8fa5f9013026264b0509f0498f4b897c9b4c824;p=advent-of-code-22.git diff --git a/advent04/Main.hs b/advent04/Main.hs index 456b157..537d7c6 100644 --- a/advent04/Main.hs +++ b/advent04/Main.hs @@ -1,6 +1,6 @@ -- Writeup at https://work.njae.me.uk/2022/12/04/advent-of-code-2022-day-4/ -import System.Environment +import AoC import Data.Text (Text) import qualified Data.Text.IO as TIO import Data.Attoparsec.Text hiding (Result) @@ -17,16 +17,6 @@ main = print $ part1 pairs print $ part2 pairs -getDataFileName :: IO String -getDataFileName = - do args <- getArgs - progName <- getProgName - let baseDataName = if null args - then progName - else head args - let dataFileName = "data/" ++ baseDataName ++ ".txt" - return dataFileName - part1 :: [Pair] -> Int part1 = length . (filter hasContainment) @@ -40,13 +30,14 @@ hasContainment (assignment1, assignment2) = disjoint (assignment1, assignment2) = (assignment1 `before` assignment2) || (assignment2 `before` assignment1) -overlaps pair = not $ disjoint pair +overlaps = not . disjoint contains, before :: Assignment -> Assignment -> Bool contains (Assignment lower1 upper1) (Assignment lower2 upper2) = (lower1 <= lower2) && (upper1 >= upper2) -before (Assignment _lower1 upper1) (Assignment lower2 _upper2) = (upper1 < lower2) +before (Assignment _lower1 upper1) (Assignment lower2 _upper2) = + (upper1 < lower2) -- Parse the input file