From ef8354646420ae6364603d2fea33955cf87c3a53 Mon Sep 17 00:00:00 2001 From: Neil Smith Date: Thu, 29 Dec 2022 16:09:33 +0000 Subject: [PATCH] Optimising day 15 --- README.md | 3 + advent-of-code22.cabal | 34 +++++++++- advent15/Main.hs | 54 ++++++++++++---- advent15/MainDirectParallel.hs | 115 +++++++++++++++++++++++++++++++++ advent15/MainLazy.hs | 99 ++++++++++++++++++++++++++++ advent15/MainOriginal.hs | 91 ++++++++++++++++++++++++++ advent15/MainSorted.hs | 102 +++++++++++++++++++++++++++++ advent15/advent15.png | Bin 0 -> 67626 bytes advent15/advent15directpar.png | Bin 0 -> 46558 bytes advent15/advent15lazy.png | Bin 0 -> 25751 bytes advent15/advent15times.csv | 9 +++ advent15/advent15times.md | 7 ++ 12 files changed, 499 insertions(+), 15 deletions(-) create mode 100644 advent15/MainDirectParallel.hs create mode 100644 advent15/MainLazy.hs create mode 100644 advent15/MainOriginal.hs create mode 100644 advent15/MainSorted.hs create mode 100644 advent15/advent15.png create mode 100644 advent15/advent15directpar.png create mode 100644 advent15/advent15lazy.png create mode 100644 advent15/advent15times.csv create mode 100644 advent15/advent15times.md diff --git a/README.md b/README.md index 7dcb1e7..a617b7c 100644 --- a/README.md +++ b/README.md @@ -86,9 +86,12 @@ executable advent01prof ghc-options: -O2 -Wall -threaded + -eventlog -rtsopts "-with-rtsopts=-N -p -s -hT" ``` +Only include the `-eventlog` directive if you want to use Threadscope to investigate parallel behaviour. + then running ``` diff --git a/advent-of-code22.cabal b/advent-of-code22.cabal index 76f7671..54649c9 100644 --- a/advent-of-code22.cabal +++ b/advent-of-code22.cabal @@ -62,7 +62,7 @@ common common-extensions , RecordWildCards , ScopedTypeVariables , TemplateHaskell - , TransformListComp + -- , TransformListComp , TupleSections , TypeApplications , TypeFamilies @@ -171,10 +171,40 @@ executable advent14 main-is: advent14/Main.hs build-depends: text, attoparsec, containers, linear, lens +executable advent15original + import: common-extensions, build-directives + main-is: advent15/MainOriginal.hs + build-depends: text, attoparsec, containers, linear, lens + +executable advent15sorted + import: common-extensions, build-directives + main-is: advent15/MainSorted.hs + build-depends: text, attoparsec, containers, linear, lens + +executable advent15lazy + import: common-extensions, build-directives + main-is: advent15/MainLazy.hs + build-depends: text, attoparsec, containers, linear, lens + +executable advent15directpar + import: common-extensions, build-directives + main-is: advent15/MainDirectParallel.hs + build-depends: text, attoparsec, containers, linear, lens, parallel, deepseq + executable advent15 import: common-extensions, build-directives main-is: advent15/Main.hs - build-depends: text, attoparsec, containers, linear, lens + build-depends: text, attoparsec, containers, linear, lens, parallel, deepseq, split + +executable advent15prof + import: common-extensions, build-directives + main-is: advent15/Main.hs + build-depends: text, attoparsec, containers, linear, lens, parallel, deepseq, split + ghc-options: -O2 + -Wall + -threaded + -eventlog + -rtsopts "-with-rtsopts=-N -p -s -hT -ls" executable advent16 import: common-extensions, build-directives diff --git a/advent15/Main.hs b/advent15/Main.hs index 96f3213..097cf6b 100644 --- a/advent15/Main.hs +++ b/advent15/Main.hs @@ -5,14 +5,24 @@ import Data.Text (Text) import qualified Data.Text.IO as TIO import Data.Attoparsec.Text hiding (take, D) import Data.Ix -import qualified Data.Set as S +-- import qualified Data.Set as S import Linear hiding (Trace, trace, distance) +import Data.List (sortOn) +import Data.List.Split (chunksOf) +import Data.Ord (Down(..)) +-- import Data.Maybe +import Control.Parallel.Strategies -- (rpar, using, withStrategy, parList, parMap) +-- import Control.DeepSeq + type Position = V2 Int data Sensor = Sensor Position Position -- sensor position, beacon position deriving (Eq, Show) +instance Ord Sensor where + (Sensor s1 b1) `compare` (Sensor s2 b2) = (s1 `manhattan` b1) `compare` (s2 `manhattan` b2) + newtype Region = Region { getRegion :: Position -> Bool } instance Semigroup Region where @@ -27,9 +37,10 @@ main = do dataFileName <- getDataFileName text <- TIO.readFile dataFileName let sensors = successfulParse text + let coverage = mconcat $ fmap nearby $ sortOn Down sensors -- print sensors - print $ part1 sensors - print $ part2 sensors + print $ part1 sensors coverage + print $ part2 sensors coverage thisY :: Int -- thisY = 10 @@ -39,16 +50,33 @@ searchRange :: (Position, Position) -- searchRange = ((V2 0 0), (V2 20 20)) searchRange = ((V2 0 0), (V2 4000000 4000000)) -part1, part2 :: [Sensor] -> Int -part1 sensors = length $ filter (\p -> p `notElem` occupied) $ filter (getRegion coverage) rowCoords - where coverage = mconcat $ fmap nearby sensors - rowCoords = range ((V2 (globalMinX sensors) thisY), (V2 (globalMaxX sensors) thisY)) +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) + , (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)) + $ 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 -part2 sensors = x * 4000000 + y - where coverage = mconcat $ fmap nearby sensors - boundaries = S.filter (inRange searchRange) $ S.unions $ fmap justOutside sensors - V2 x y = S.findMin $ S.filter (\p -> not $ getRegion coverage p) boundaries manhattan :: Position -> Position -> Int manhattan p1 p2 = (abs dx) + (abs dy) @@ -66,8 +94,8 @@ globalMinX, globalMaxX :: [Sensor] -> Int globalMinX = minimum . fmap minX globalMaxX = maximum . fmap maxX -justOutside :: Sensor -> S.Set Position -justOutside (Sensor s@(V2 sx sy) b) = S.fromList (topLeft ++ topRight ++ bottomLeft ++ bottomRight) +justOutside :: Sensor -> [Position] +justOutside (Sensor s@(V2 sx sy) b) = topLeft ++ topRight ++ bottomLeft ++ bottomRight where d = 1 + manhattan s b topLeft = [V2 x y | (x, y) <- zip [(sx - d)..sx] [sy..(sy + d)] ] topRight = [V2 x y | (x, y) <- zip [(sx + d), (sx + d - 1)..sx] [sy..(sy + d)] ] diff --git a/advent15/MainDirectParallel.hs b/advent15/MainDirectParallel.hs new file mode 100644 index 0000000..ccf29d9 --- /dev/null +++ b/advent15/MainDirectParallel.hs @@ -0,0 +1,115 @@ +-- Writeup at https://work.njae.me.uk/2022/12/15/advent-of-code-2022-day-15/ + +import AoC +import Data.Text (Text) +import qualified Data.Text.IO as TIO +import Data.Attoparsec.Text hiding (take, D) +import Data.Ix +-- import qualified Data.Set as S +import Linear hiding (Trace, trace, distance) +import Data.List (sortOn) +import Data.Ord (Down(..)) +-- import Data.Maybe +import Control.Parallel.Strategies -- (rpar, using, withStrategy, parList, parMap) +-- import Control.DeepSeq + + +type Position = V2 Int + +data Sensor = Sensor Position Position -- sensor position, beacon position + deriving (Eq, Show) + +instance Ord Sensor where + (Sensor s1 b1) `compare` (Sensor s2 b2) = (s1 `manhattan` b1) `compare` (s2 `manhattan` b2) + +newtype Region = Region { getRegion :: Position -> Bool } + +instance Semigroup Region where + r1 <> r2 = Region (\p -> getRegion r1 p || getRegion r2 p) + +instance Monoid Region where + -- mempty = Region (\p -> False) + mempty = Region (const False) + +main :: IO () +main = + do dataFileName <- getDataFileName + text <- TIO.readFile dataFileName + let sensors = successfulParse text + let coverage = mconcat $ fmap nearby $ sortOn Down sensors + -- print sensors + print $ part1 sensors coverage + print $ part2 sensors coverage + +thisY :: Int +-- thisY = 10 +thisY = 2000000 + +searchRange :: (Position, Position) +-- searchRange = ((V2 0 0), (V2 20 20)) +searchRange = ((V2 0 0), (V2 4000000 4000000)) + +part1, part2 :: [Sensor] -> Region -> Int +part1 sensors coverage = length $ filter (\p -> p `notElem` occupied) + $ fmap snd $ filter fst forbidden + where -- coverage = mconcat $ fmap nearby $ sortOn Down sensors + rowCoords = range ( (V2 (globalMinX sensors) thisY) + , (V2 (globalMaxX sensors) thisY) + ) + 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) + +part2 sensors coverage = x * 4000000 + y + where -- coverage = mconcat $ fmap nearby $ sortOn Down sensors + 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 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 + + +manhattan :: Position -> Position -> Int +manhattan p1 p2 = (abs dx) + (abs dy) + where V2 dx dy = p1 ^-^ p2 + +nearby :: Sensor -> Region +nearby (Sensor s b) = Region (\p -> manhattan s p <= dist) + where dist = manhattan s b + +minX, maxX :: Sensor -> Int +minX (Sensor s@(V2 sx _) b) = sx - (manhattan s b) +maxX (Sensor s@(V2 sx _) b) = sx + (manhattan s b) + +globalMinX, globalMaxX :: [Sensor] -> Int +globalMinX = minimum . fmap minX +globalMaxX = maximum . fmap maxX + +justOutside :: Sensor -> [Position] +justOutside (Sensor s@(V2 sx sy) b) = topLeft ++ topRight ++ bottomLeft ++ bottomRight + where d = 1 + manhattan s b + topLeft = [V2 x y | (x, y) <- zip [(sx - d)..sx] [sy..(sy + d)] ] + topRight = [V2 x y | (x, y) <- zip [(sx + d), (sx + d - 1)..sx] [sy..(sy + d)] ] + bottomLeft = [V2 x y | (x, y) <- zip [(sx - d)..sx] [sy, (sy - 1)..(sy - d)] ] + bottomRight = [V2 x y | (x, y) <- zip [(sx + d), (sx + d - 1)..sx] [sy, (sy - 1)..(sy - d)] ] + +-- Parse the input file + +sensorsP :: Parser [Sensor] +sensorP :: Parser Sensor +positionP :: Parser Position + +sensorsP = sensorP `sepBy` endOfLine +sensorP = Sensor <$> ("Sensor at " *> positionP) <*> (": closest beacon is at " *> positionP) +positionP = V2 <$> (("x=" *> signed decimal) <* ", ") <*> ("y=" *> signed decimal) + +successfulParse :: Text -> [Sensor] +successfulParse input = + case parseOnly sensorsP input of + Left _err -> [] -- TIO.putStr $ T.pack $ parseErrorPretty err + Right sensors -> sensors diff --git a/advent15/MainLazy.hs b/advent15/MainLazy.hs new file mode 100644 index 0000000..8b85ccc --- /dev/null +++ b/advent15/MainLazy.hs @@ -0,0 +1,99 @@ +-- Writeup at https://work.njae.me.uk/2022/12/15/advent-of-code-2022-day-15/ + +import AoC +import Data.Text (Text) +import qualified Data.Text.IO as TIO +import Data.Attoparsec.Text hiding (take, D) +import Data.Ix +-- import qualified Data.Set as S +import Linear hiding (Trace, trace, distance) +import Data.List (sortOn) +import Data.Ord (Down(..)) +-- import Data.Maybe + + +type Position = V2 Int + +data Sensor = Sensor Position Position -- sensor position, beacon position + deriving (Eq, Show) + +instance Ord Sensor where + (Sensor s1 b1) `compare` (Sensor s2 b2) = (s1 `manhattan` b1) `compare` (s2 `manhattan` b2) + +newtype Region = Region { getRegion :: Position -> Bool } + +instance Semigroup Region where + r1 <> r2 = Region (\p -> getRegion r1 p || getRegion r2 p) + +instance Monoid Region where + -- mempty = Region (\p -> False) + mempty = Region (const False) + +main :: IO () +main = + do dataFileName <- getDataFileName + text <- TIO.readFile dataFileName + let sensors = successfulParse text + -- print sensors + print $ part1 sensors + print $ part2 sensors + +thisY :: Int +-- thisY = 10 +thisY = 2000000 + +searchRange :: (Position, Position) +-- searchRange = ((V2 0 0), (V2 20 20)) +searchRange = ((V2 0 0), (V2 4000000 4000000)) + +part1, part2 :: [Sensor] -> Int +part1 sensors = length $ filter (\p -> p `notElem` occupied) $ filter (getRegion coverage) rowCoords + where coverage = mconcat $ fmap nearby $ sortOn Down sensors + rowCoords = range ((V2 (globalMinX sensors) thisY), (V2 (globalMaxX sensors) thisY)) + occupied = concatMap (\(Sensor s b) -> [s, b]) sensors + +part2 sensors = x * 4000000 + y + where coverage = mconcat $ fmap nearby $ sortOn Down sensors + boundaries = fmap (filter (inRange searchRange)) $ fmap justOutside sensors + V2 x y = head $ concat $ fmap (filter (not . (getRegion coverage))) boundaries + + +manhattan :: Position -> Position -> Int +manhattan p1 p2 = (abs dx) + (abs dy) + where V2 dx dy = p1 ^-^ p2 + +nearby :: Sensor -> Region +nearby (Sensor s b) = Region (\p -> manhattan s p <= dist) + where dist = manhattan s b + +minX, maxX :: Sensor -> Int +minX (Sensor s@(V2 sx _) b) = sx - (manhattan s b) +maxX (Sensor s@(V2 sx _) b) = sx + (manhattan s b) + +globalMinX, globalMaxX :: [Sensor] -> Int +globalMinX = minimum . fmap minX +globalMaxX = maximum . fmap maxX + +justOutside :: Sensor -> [Position] +justOutside (Sensor s@(V2 sx sy) b) = topLeft ++ topRight ++ bottomLeft ++ bottomRight + where d = 1 + manhattan s b + topLeft = [V2 x y | (x, y) <- zip [(sx - d)..sx] [sy..(sy + d)] ] + topRight = [V2 x y | (x, y) <- zip [(sx + d), (sx + d - 1)..sx] [sy..(sy + d)] ] + bottomLeft = [V2 x y | (x, y) <- zip [(sx - d)..sx] [sy, (sy - 1)..(sy - d)] ] + bottomRight = [V2 x y | (x, y) <- zip [(sx + d), (sx + d - 1)..sx] [sy, (sy - 1)..(sy - d)] ] + +-- Parse the input file + +sensorsP :: Parser [Sensor] +sensorP :: Parser Sensor +positionP :: Parser Position + +sensorsP = sensorP `sepBy` endOfLine +sensorP = Sensor <$> ("Sensor at " *> positionP) <*> (": closest beacon is at " *> positionP) +positionP = V2 <$> (("x=" *> signed decimal) <* ", ") <*> ("y=" *> signed decimal) + +successfulParse :: Text -> [Sensor] +successfulParse input = + case parseOnly sensorsP input of + Left _err -> [] -- TIO.putStr $ T.pack $ parseErrorPretty err + Right sensors -> sensors diff --git a/advent15/MainOriginal.hs b/advent15/MainOriginal.hs new file mode 100644 index 0000000..d04b1ea --- /dev/null +++ b/advent15/MainOriginal.hs @@ -0,0 +1,91 @@ +-- Writeup at https://work.njae.me.uk/2022/12/15/advent-of-code-2022-day-15/ + +import AoC +import Data.Text (Text) +import qualified Data.Text.IO as TIO +import Data.Attoparsec.Text hiding (take, D) +import Data.Ix +import qualified Data.Set as S +import Linear hiding (Trace, trace, distance) + +type Position = V2 Int + +data Sensor = Sensor Position Position -- sensor position, beacon position + deriving (Eq, Show) + +newtype Region = Region { getRegion :: Position -> Bool } + +instance Semigroup Region where + r1 <> r2 = Region (\p -> getRegion r1 p || getRegion r2 p) + +instance Monoid Region where + -- mempty = Region (\p -> False) + mempty = Region (const False) + +main :: IO () +main = + do dataFileName <- getDataFileName + text <- TIO.readFile dataFileName + let sensors = successfulParse text + -- print sensors + print $ part1 sensors + print $ part2 sensors + +thisY :: Int +-- thisY = 10 +thisY = 2000000 + +searchRange :: (Position, Position) +-- searchRange = ((V2 0 0), (V2 20 20)) +searchRange = ((V2 0 0), (V2 4000000 4000000)) + +part1, part2 :: [Sensor] -> Int +part1 sensors = length $ filter (\p -> p `notElem` occupied) $ filter (getRegion coverage) rowCoords + where coverage = mconcat $ fmap nearby sensors + rowCoords = range ((V2 (globalMinX sensors) thisY), (V2 (globalMaxX sensors) thisY)) + occupied = concatMap (\(Sensor s b) -> [s, b]) sensors + +part2 sensors = x * 4000000 + y + where coverage = mconcat $ fmap nearby sensors + boundaries = {-# SCC boundaries #-} S.filter (inRange searchRange) $ S.unions $ fmap justOutside sensors + V2 x y = {-# SCC findMinV #-} S.findMin $ S.filter (not . (getRegion coverage)) boundaries + +manhattan :: Position -> Position -> Int +manhattan p1 p2 = (abs dx) + (abs dy) + where V2 dx dy = p1 ^-^ p2 + +nearby :: Sensor -> Region +nearby (Sensor s b) = Region (\p -> manhattan s p <= dist) + where dist = manhattan s b + +minX, maxX :: Sensor -> Int +minX (Sensor s@(V2 sx _) b) = sx - (manhattan s b) +maxX (Sensor s@(V2 sx _) b) = sx + (manhattan s b) + +globalMinX, globalMaxX :: [Sensor] -> Int +globalMinX = minimum . fmap minX +globalMaxX = maximum . fmap maxX + +justOutside :: Sensor -> S.Set Position +justOutside (Sensor s@(V2 sx sy) b) = S.fromList (topLeft ++ topRight ++ bottomLeft ++ bottomRight) + where d = 1 + manhattan s b + topLeft = [V2 x y | (x, y) <- zip [(sx - d)..sx] [sy..(sy + d)] ] + topRight = [V2 x y | (x, y) <- zip [(sx + d), (sx + d - 1)..sx] [sy..(sy + d)] ] + bottomLeft = [V2 x y | (x, y) <- zip [(sx - d)..sx] [sy, (sy - 1)..(sy - d)] ] + bottomRight = [V2 x y | (x, y) <- zip [(sx + d), (sx + d - 1)..sx] [sy, (sy - 1)..(sy - d)] ] + +-- Parse the input file + +sensorsP :: Parser [Sensor] +sensorP :: Parser Sensor +positionP :: Parser Position + +sensorsP = sensorP `sepBy` endOfLine +sensorP = Sensor <$> ("Sensor at " *> positionP) <*> (": closest beacon is at " *> positionP) +positionP = V2 <$> (("x=" *> signed decimal) <* ", ") <*> ("y=" *> signed decimal) + +successfulParse :: Text -> [Sensor] +successfulParse input = + case parseOnly sensorsP input of + Left _err -> [] -- TIO.putStr $ T.pack $ parseErrorPretty err + Right sensors -> sensors diff --git a/advent15/MainSorted.hs b/advent15/MainSorted.hs new file mode 100644 index 0000000..7fcd5e0 --- /dev/null +++ b/advent15/MainSorted.hs @@ -0,0 +1,102 @@ +-- Writeup at https://work.njae.me.uk/2022/12/15/advent-of-code-2022-day-15/ + +import AoC +import Data.Text (Text) +import qualified Data.Text.IO as TIO +import Data.Attoparsec.Text hiding (take, D) +import Data.Ix +import qualified Data.Set as S +import Linear hiding (Trace, trace, distance) +import Data.List (sortOn) +import Data.Ord (Down(..)) + + +type Position = V2 Int + +data Sensor = Sensor Position Position -- sensor position, beacon position + deriving (Eq, Show) + +instance Ord Sensor where + -- (Sensor s1 b1) `compare` (Sensor s2 b2) + -- | cmp == EQ = s1 `compare` s2 + -- | otherwise = cmp + -- where cmp = (s1 `manhattan` b1) `compare` (s2 `manhattan` b2) + (Sensor s1 b1) `compare` (Sensor s2 b2) + = (s1 `manhattan` b1) `compare` (s2 `manhattan` b2) + +newtype Region = Region { getRegion :: Position -> Bool } + +instance Semigroup Region where + r1 <> r2 = Region (\p -> getRegion r1 p || getRegion r2 p) + +instance Monoid Region where + -- mempty = Region (\p -> False) + mempty = Region (const False) + +main :: IO () +main = + do dataFileName <- getDataFileName + text <- TIO.readFile dataFileName + let sensors = successfulParse text + -- print sensors + print $ part1 sensors + print $ part2 sensors + +thisY :: Int +-- thisY = 10 +thisY = 2000000 + +searchRange :: (Position, Position) +-- searchRange = ((V2 0 0), (V2 20 20)) +searchRange = ((V2 0 0), (V2 4000000 4000000)) + +part1, part2 :: [Sensor] -> Int +part1 sensors = length $ filter (\p -> p `notElem` occupied) $ filter (getRegion coverage) rowCoords + where coverage = mconcat $ fmap nearby $ sortOn Down sensors + rowCoords = range ((V2 (globalMinX sensors) thisY), (V2 (globalMaxX sensors) thisY)) + occupied = concatMap (\(Sensor s b) -> [s, b]) sensors + +part2 sensors = x * 4000000 + y + where coverage = mconcat $ fmap nearby $ sortOn Down sensors + boundaries = {-# SCC boundaries #-} S.filter (inRange searchRange) $ S.unions $ fmap justOutside sensors + V2 x y = {-# SCC findMinV #-} S.findMin $ S.filter (not . (getRegion coverage)) boundaries + +manhattan :: Position -> Position -> Int +manhattan p1 p2 = (abs dx) + (abs dy) + where V2 dx dy = p1 ^-^ p2 + +nearby :: Sensor -> Region +nearby (Sensor s b) = Region (\p -> manhattan s p <= dist) + where dist = manhattan s b + +minX, maxX :: Sensor -> Int +minX (Sensor s@(V2 sx _) b) = sx - (manhattan s b) +maxX (Sensor s@(V2 sx _) b) = sx + (manhattan s b) + +globalMinX, globalMaxX :: [Sensor] -> Int +globalMinX = minimum . fmap minX +globalMaxX = maximum . fmap maxX + +justOutside :: Sensor -> S.Set Position +justOutside (Sensor s@(V2 sx sy) b) = S.fromList (topLeft ++ topRight ++ bottomLeft ++ bottomRight) + where d = 1 + manhattan s b + topLeft = [V2 x y | (x, y) <- zip [(sx - d)..sx] [sy..(sy + d)] ] + topRight = [V2 x y | (x, y) <- zip [(sx + d), (sx + d - 1)..sx] [sy..(sy + d)] ] + bottomLeft = [V2 x y | (x, y) <- zip [(sx - d)..sx] [sy, (sy - 1)..(sy - d)] ] + bottomRight = [V2 x y | (x, y) <- zip [(sx + d), (sx + d - 1)..sx] [sy, (sy - 1)..(sy - d)] ] + +-- Parse the input file + +sensorsP :: Parser [Sensor] +sensorP :: Parser Sensor +positionP :: Parser Position + +sensorsP = sensorP `sepBy` endOfLine +sensorP = Sensor <$> ("Sensor at " *> positionP) <*> (": closest beacon is at " *> positionP) +positionP = V2 <$> (("x=" *> signed decimal) <* ", ") <*> ("y=" *> signed decimal) + +successfulParse :: Text -> [Sensor] +successfulParse input = + case parseOnly sensorsP input of + Left _err -> [] -- TIO.putStr $ T.pack $ parseErrorPretty err + Right sensors -> sensors diff --git a/advent15/advent15.png b/advent15/advent15.png new file mode 100644 index 0000000000000000000000000000000000000000..7cfeee906ec02012ad722cffc2baed07ac278c95 GIT binary patch literal 67626 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 literal 0 HcmV?d00001 diff --git a/advent15/advent15directpar.png b/advent15/advent15directpar.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed68ac5f5fec5bcc435ed80dea9063d511a8916 GIT binary patch literal 46558 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[qB2mAlF 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