Files
advent-of-code-2023/day03/Part1.hs
2023-12-04 19:05:20 +01:00

19 lines
738 B
Haskell

module Part1 where
import Commons
isSymbolNeighbor :: [Coordinates] -> [Coordinates] -> Bool
isSymbolNeighbor [] _ = False
isSymbolNeighbor (h: t) symbolsCoordinates = h `elem` symbolsCoordinates || isSymbolNeighbor t symbolsCoordinates
getActualPartNumbers :: [NumberPart] -> [Coordinates] -> [NumberPart]
getActualPartNumbers [] _ = []
getActualPartNumbers (h: t) symbolsCoordinates
| isSymbolNeighbor (neighbors h) symbolsCoordinates = h: getActualPartNumbers t symbolsCoordinates
| otherwise = getActualPartNumbers t symbolsCoordinates
getActualPartValuesNumbersFromEngine :: Engine -> [Int]
getActualPartValuesNumbersFromEngine engine =
map value $ getActualPartNumbers (numbers engine) $ map coordinates $ symbols engine