19 lines
819 B
Haskell
19 lines
819 B
Haskell
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
|