Files
advent-of-code-2023/day03/Part1.hs
2023-12-03 13:39:56 +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)))