module Part1 where import Commons applyConversionMap :: ConversionMap -> Int -> Int applyConversionMap [] v = v applyConversionMap (e: t) v | v >= sourceStart e && v <= sourceStart e + size e = destinationStart e - sourceStart e + v | otherwise = applyConversionMap t v applyConversionMapToList :: ConversionMap -> [Int] -> [Int] applyConversionMapToList cm = map $ applyConversionMap cm getLocations :: Almanac -> [Int] getLocations a = applyConversionMapToList (toLocation a) . applyConversionMapToList (toHumidity a) . applyConversionMapToList (toTemperature a) . applyConversionMapToList (toLight a) . applyConversionMapToList (toWater a) . applyConversionMapToList (toFertilizer a) . applyConversionMapToList (toSoil a) $ seeds a