Skip to content
This repository was archived by the owner on Nov 17, 2024. It is now read-only.

Commit 80e4a30

Browse files
committed
day 9 slightly faster by not searching all neighbors every time
1 parent e9d2ca3 commit 80e4a30

File tree

1 file changed

+3
-7
lines changed

1 file changed

+3
-7
lines changed

src/AOC/Challenge/Day09.hs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,13 @@ module AOC.Challenge.Day09 (
1414
, day09b
1515
) where
1616

17-
import AOC.Common (freqs, digitToIntSafe)
17+
import AOC.Common (freqs, digitToIntSafe, firstJust)
1818
import AOC.Common.Point (Point, cardinalNeighbs, parseAsciiMap)
1919
import AOC.Solver ((:~>)(..))
2020
import Control.Monad (mfilter)
2121
import Data.Foldable (toList)
2222
import Data.List (sortBy)
2323
import Data.Map (Map)
24-
import Data.Maybe (mapMaybe)
25-
import Data.Ord (comparing)
26-
import Safe.Foldable (minimumByMay)
2724
import qualified Data.Map as M
2825

2926
-- | Find low points and their heights
@@ -60,7 +57,6 @@ day09b = MkSol
6057
flowMap :: Map Point Int -> Map Point (Maybe Point)
6158
flowMap mp = M.mapWithKey go mp
6259
where
63-
go p i = fmap fst . minimumByMay (comparing snd) $
64-
mapMaybe getGrad (cardinalNeighbs p)
60+
go p i = firstJust getGrad (cardinalNeighbs p)
6561
where
66-
getGrad q = (q,) <$> mfilter (< i) (M.lookup q mp)
62+
getGrad q = q <$ mfilter (< i) (M.lookup q mp)

0 commit comments

Comments
 (0)