2023/day5/part1.py
Fedaya b588eeb7e5 First solution to part2
It's kind of a time hog, though
2023-12-05 08:06:53 +01:00

31 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python3.11
# Is killed on WSL2 after vmmem increase to 16GB
from data import extract
seeds, maps = extract("input.txt")
lowest_location = None
for seed in seeds:
soil_maps = list(filter(lambda soil_map: soil_map.is_mapped(seed), maps["seed-to-soil"]))
soil = seed if soil_maps == [] else soil_maps[0].mapped_value(seed)
fertilizer_maps = list(filter(lambda fertilizer_map: fertilizer_map.is_mapped(soil), maps["soil-to-fertilizer"]))
#print(fertilizer_maps)
fertilizer = soil if fertilizer_maps == [] else fertilizer_maps[0].mapped_value(soil)
water_maps = list(filter(lambda water_map: water_map.is_mapped(fertilizer), maps["fertilizer-to-water"]))
water = fertilizer if water_maps == [] else water_maps[0].mapped_value(fertilizer)
light_maps = list(filter(lambda light_map: light_map.is_mapped(water), maps["water-to-light"]))
light = water if light_maps == [] else light_maps[0].mapped_value(water)
temperature_maps = list(filter(lambda temperature_map: temperature_map.is_mapped(light), maps["light-to-temperature"]))
temperature = light if temperature_maps == [] else temperature_maps[0].mapped_value(light)
humidity_maps = list(filter(lambda humidity_map: humidity_map.is_mapped(temperature), maps["temperature-to-humidity"]))
humidity = temperature if humidity_maps == [] else humidity_maps[0].mapped_value(temperature)
location_maps = list(filter(lambda location_map: location_map.is_mapped(humidity), maps["humidity-to-location"]))
location = humidity if location_maps == [] else location_maps[0].mapped_value(humidity)
if lowest_location is not None:
lowest_location = min(lowest_location, location)
else:
lowest_location = location
print(lowest_location)