44 lines
1.4 KiB
Python
Executable File
44 lines
1.4 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
def main():
|
|
seeds = []
|
|
ranges = {}
|
|
|
|
with open('input.txt', 'r') as input_file:
|
|
line = input_file.readline().strip()
|
|
while line != '':
|
|
if line.startswith('seeds:'):
|
|
seeds = [int(seed) for seed in line.split(':')[1].split()]
|
|
input_file.readline()
|
|
line = input_file.readline().strip()
|
|
else:
|
|
map = line.split()[0]
|
|
ranges[map] = {}
|
|
line = input_file.readline().strip()
|
|
while line != '':
|
|
digits = [int(num) for num in line.split()]
|
|
dest_range = range(digits[0], digits[0] + digits[2])
|
|
source_range = range(digits[1], digits[1] + digits[2])
|
|
ranges[map][source_range] = dest_range
|
|
line = input_file.readline().strip()
|
|
line = input_file.readline().strip()
|
|
|
|
locations = []
|
|
|
|
for seed in seeds:
|
|
next_val = seed
|
|
for map in ranges:
|
|
for source in ranges[map]:
|
|
if next_val in source:
|
|
difference = source.start - ranges[map][source].start
|
|
next_val = next_val - difference
|
|
break
|
|
else:
|
|
next_val = next_val
|
|
|
|
locations.append(next_val)
|
|
|
|
print(min(locations))
|
|
|
|
if __name__ == '__main__':
|
|
main() |