X-Git-Url: https://git.njae.me.uk/?p=advent-of-code-22.git;a=blobdiff_plain;f=advent15%2FMain.hs;fp=advent15%2FMain.hs;h=664e47d0ab4bb73a4b44cb135d96ebd35400aa13;hp=097cf6b6850748d1a7a93294771937e4f94bb8f7;hb=74302040c3188f5306aee7b438094f11652a11f8;hpb=ef8354646420ae6364603d2fea33955cf87c3a53 diff --git a/advent15/Main.hs b/advent15/Main.hs index 097cf6b..664e47d 100644 --- a/advent15/Main.hs +++ b/advent15/Main.hs @@ -52,29 +52,20 @@ searchRange = ((V2 0 0), (V2 4000000 4000000)) part1, part2 :: [Sensor] -> Region -> Int part1 sensors coverage = sum (fmap countForbidden rowChunks `using` (parList rseq)) - where -- coverage = mconcat $ fmap nearby $ sortOn Down sensors - rowCoords = range ( (V2 (globalMinX sensors) thisY) + where rowCoords = range ( (V2 (globalMinX sensors) thisY) , (V2 (globalMaxX sensors) thisY) ) rowChunks = chunksOf 1000 rowCoords occupied = concatMap (\(Sensor s b) -> [s, b]) sensors - -- forbidden = (filter (\p -> p `notElem` occupied) $ filter (getRegion coverage) rowCoords) `using` (parList rpar) - -- forbidden = (fmap (\p -> (getRegion coverage p, p)) rowCoords) `using` (parList rdeepseq) countForbidden positions = length $ filter (\p -> p `notElem` occupied) $ filter (getRegion coverage) positions part2 sensors coverage = x * 4000000 + y - where -- coverage = mconcat $ fmap nearby $ sortOn Down sensors - boundaries = fmap (filter (inRange searchRange)) + where boundaries = fmap (filter (inRange searchRange)) $ fmap justOutside sensors - -- holes = (fmap (filter (not . (getRegion coverage))) boundaries) `using` (parList rpar) holes = fmap (filter (not . (getRegion coverage))) boundaries `using` (parList rseq) - -- holes = (fmap (filter (not . (getRegion coverage))) boundaries) `using` (parList rpar) - -- holes = withStrategy (parList rpar) (fmap (filter (not . (getRegion coverage))) boundaries) - -- holes = using (fmap (filter (not . (getRegion coverage))) boundaries) (parList rpar) - -- holes = parMap rpar (filter (not . (getRegion coverage))) boundaries V2 x y = head $ concat holes