|
3 | 3 | module AOC2017.Day21 (day21a, day21b) where |
4 | 4 |
|
5 | 5 | import AOC2017.Types (Challenge) |
6 | | -import AOC2017.Util |
7 | | -import Control.Lens |
8 | | -import Data.List |
9 | | -import Data.List.Split |
| 6 | +import AOC2017.Util ((!!!), strip) |
| 7 | +import Control.Lens (over, Traversal') |
| 8 | +import Data.List (transpose) |
| 9 | +import Data.List.Split (chunksOf, splitOn) |
10 | 10 | import qualified Data.Map as M |
11 | | -import qualified Data.Vector as V |
12 | | -import qualified Linear as L |
13 | 11 |
|
14 | 12 | type Grid = [[Bool]] |
15 | 13 |
|
@@ -37,15 +35,16 @@ parse = M.unions . map (M.fromList . parseLine) . lines |
37 | 35 | where |
38 | 36 | gridIn = fmap (== '#') <$> xs |
39 | 37 | gridOut = fmap (== '#') <$> ys |
| 38 | + parseLine _ = error "No parse" |
40 | 39 |
|
41 | 40 | -- | A traversal over subgrids of a grid |
42 | 41 | subgrids :: Int -> Traversal' Grid Grid |
43 | | -subgrids n f = fmap joinGrid . (traverse . traverse) f . splitGrid n |
| 42 | +subgrids n f = fmap joinGrid . (traverse . traverse) f . splitGrid |
44 | 43 | where |
45 | | - splitGrid :: Int->Grid -> [[Grid]] |
46 | | - splitGrid n = transpose |
47 | | - . map (map transpose . chunksOf n . transpose) |
48 | | - . chunksOf n |
| 44 | + splitGrid :: Grid -> [[Grid]] |
| 45 | + splitGrid = transpose |
| 46 | + . map (map transpose . chunksOf n . transpose) |
| 47 | + . chunksOf n |
49 | 48 | joinGrid :: [[Grid]] -> Grid |
50 | 49 | joinGrid = transpose . concatMap (transpose . concat) |
51 | 50 |
|
|
0 commit comments