2023 - Day 5 part 2 - bad solution / brute force
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
b41ec0b3f0
commit
6eb384f65a
1 changed files with 53 additions and 0 deletions
53
2023/5/5_2.py
Normal file
53
2023/5/5_2.py
Normal file
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/env python
|
||||
# 2023 - Advent Of Code 5 - part 2
|
||||
|
||||
# file = 'input_example.txt'
|
||||
file = 'input.txt'
|
||||
|
||||
# pylint: disable=consider-using-with
|
||||
input_lines = [line.strip('\n') for line in open(file, encoding="utf-8")]
|
||||
|
||||
seeds_ranges = [int(x) for x in input_lines[0].split(':')[1].split(' ') if x != '']
|
||||
print(f'seeds: {seeds_ranges}')
|
||||
seeds = []
|
||||
# acc = 0
|
||||
# for r in range(0, len(seeds_ranges), 2):
|
||||
# num = seeds_ranges[r + 1]
|
||||
# acc += num
|
||||
# print(num)
|
||||
# print(f'seeds: {acc}')
|
||||
|
||||
# parse ranges
|
||||
maps = []
|
||||
count = 0
|
||||
cur_list = []
|
||||
for line in input_lines[2:]:
|
||||
if line == '':
|
||||
count += 1
|
||||
maps.append(cur_list)
|
||||
elif line.endswith(':'):
|
||||
cur_list = []
|
||||
else:
|
||||
dest, source, length = line.split(' ')
|
||||
# print(f'parsed dest: {dest} source: {source} len: {length}')
|
||||
cur_list.append((int(dest), int(source), int(length)))
|
||||
maps.append(cur_list)
|
||||
|
||||
min_location = 1917300386
|
||||
for r in range(0, len(seeds_ranges), 2):
|
||||
# print(r)
|
||||
for s in range(seeds_ranges[r], seeds_ranges[r] + seeds_ranges[r+1]):
|
||||
location = s
|
||||
for m in maps:
|
||||
for r in m:
|
||||
old = location
|
||||
if r[1] <= location < (r[1] + r[2]):
|
||||
location = r[0] + (location - r[1])
|
||||
break
|
||||
if location < min_location:
|
||||
min_location = location
|
||||
|
||||
print(f'{len(seeds)} seeds')
|
||||
# print(f'seeds: {seeds}')
|
||||
|
||||
print(min_location)
|
Loading…
Reference in a new issue