Bit of refactoring
authorNeil Smith <NeilNjae@users.noreply.github.com>
Wed, 4 Dec 2024 14:00:43 +0000 (14:00 +0000)
committerNeil Smith <NeilNjae@users.noreply.github.com>
Wed, 4 Dec 2024 14:00:43 +0000 (14:00 +0000)
advent04/Main.hs

index fc8b0b746a6e9ebbe869e1a8c2cbf80f15a76402..2ee0453a12bd8fa26e6ad54c6cd2536e3ad90a42 100644 (file)
@@ -21,12 +21,13 @@ part1, part2 :: Grid -> Int
 part1 grid = length $ filter (== targetWord) 
                     $ foundWords grid 
                     $ validWords grid 
-                    $ potentialWords grid
+                    $ potentialWords grid 
+                    $ extensions targetLength
 
 part2 grid = length $ filter isXmas 
                     $ foundWords grid 
                     $ validWords grid 
-                    $ potentialXs grid
+                    $ potentialWords grid xExtension
 
 targetWord :: String
 targetWord = "XMAS"
@@ -44,15 +45,12 @@ extensions n = fmap go directions
                   , dr /= 0 || dc /= 0
                   ]
 
-xExtension :: [Position]
-xExtension = [V2 0 0, V2 -1 -1, V2 1 -1, V2 -1 1, V2 1 1]
+xExtension :: [[Position]]
+xExtension = [[V2 0 0, V2 -1 -1, V2 1 -1, V2 -1 1, V2 1 1]]
 
-potentialWords, potentialXs :: Grid -> [[Position]]
-potentialWords grid = concatMap go $ indices grid
-  where go pos = fmap (^+^ pos) <$> extensions targetLength
-
-potentialXs grid = go <$> indices grid
-  where go pos = fmap (^+^ pos) xExtension
+potentialWords :: Grid -> [[Position]] -> [[Position]]
+potentialWords grid exts = concatMap go $ indices grid
+  where go pos = fmap (^+^ pos) <$> exts
 
 validWords :: Grid -> [[Position]] -> [[Position]]
 validWords grid = filter allInBounds