diff options
author | Akshay <[email protected]> | 2020-12-18 06:37:18 +0000 |
---|---|---|
committer | Akshay <[email protected]> | 2020-12-18 06:37:18 +0000 |
commit | 9a503340b2996b6da4b044800dbdc930bf0466ed (patch) | |
tree | b1df1dc539ac45fc7f85ca95775d76babc8a3d33 /execs/Day17.hs | |
parent | 526382de827b70731f704b8ecd49887cd238e06f (diff) |
Diffstat (limited to 'execs/Day17.hs')
-rw-r--r-- | execs/Day17.hs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/execs/Day17.hs b/execs/Day17.hs index bb632e0..ccedffe 100644 --- a/execs/Day17.hs +++ b/execs/Day17.hs | |||
@@ -2,7 +2,7 @@ module Main where | |||
2 | 2 | ||
3 | import Control.Monad | 3 | import Control.Monad |
4 | import Data.Map (Map) | 4 | import Data.Map (Map) |
5 | import qualified Data.Map as Map | 5 | import qualified Data.Map as M |
6 | import Data.Maybe | 6 | import Data.Maybe |
7 | import Utils | 7 | import Utils |
8 | 8 | ||
@@ -12,7 +12,7 @@ toBool '#' = True | |||
12 | toBool '.' = False | 12 | toBool '.' = False |
13 | 13 | ||
14 | gridMap :: String -> Map Pos Bool | 14 | gridMap :: String -> Map Pos Bool |
15 | gridMap s = Map.fromList | 15 | gridMap s = M.fromList |
16 | [((x,y,0,0), toBool a) | 16 | [((x,y,0,0), toBool a) |
17 | | (y, row) <- zip [0..] rows | 17 | | (y, row) <- zip [0..] rows |
18 | , (x, a) <- zip [0..] row | 18 | , (x, a) <- zip [0..] row |
@@ -35,13 +35,13 @@ convert False 3 = True | |||
35 | convert _ _ = False | 35 | convert _ _ = False |
36 | 36 | ||
37 | doStep :: Map Pos Bool -> Map Pos Bool | 37 | doStep :: Map Pos Bool -> Map Pos Bool |
38 | doStep m = Map.mapWithKey fn $ m <> Map.fromList [(p, False) | p <- concatMap around (Map.keys m)] | 38 | doStep m = M.mapWithKey fn $ m <> M.fromList [(p, False) | p <- concatMap around (M.keys m)] |
39 | where fn pos v = convert v n | 39 | where fn pos v = convert v n |
40 | where n = howMany id $ map (fromMaybe False . flip Map.lookup m) $ around pos | 40 | where n = howMany id $ map (fromMaybe False . flip M.lookup m) $ around pos |
41 | 41 | ||
42 | main :: IO () | 42 | main :: IO () |
43 | main = do | 43 | main = do |
44 | n <- readFile "input/17" | 44 | n <- readFile "input/17" |
45 | let grid = gridMap n | 45 | let grid = gridMap n |
46 | print $ Map.size $ Map.filter id (iterate doStep grid !! 6) | 46 | print $ M.size $ M.filter id (iterate doStep grid !! 6) |
47 | 47 | ||