You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.5 KiB

lines = open('inputs/day1.txt').readlines()
digit_names = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
replaced_names = ['o1e', 't2o', 't3e', 'f4r', 'f5e', 's6x', 's7n', 'e8h', 'n9e']
def digits(lines):
dgts= []
for line in lines:
numbers = ''
for char in line:
if char.isdigit():
numbers += char
break
for char in line[::-1]:
if char.isdigit():
numbers += char
break
dgts.append(int(numbers))
return dgts
def transform_digits(lines):
newlines = []
for line in lines:
indices = {}
for idx, c in enumerate(digit_names):
c_loc = line.find(c)
if c_loc != -1:
indices[str(c_loc)] = str(idx+1)
if len(indices) == 0:
newlines.append(line)
else:
first_index = sorted(indices)[0]
first_number = replaced_names[int(indices[first_index])-1]
first_digit_name = digit_names[int(indices[first_index])-1]
second_index = sorted(indices)[-1]
second_number = replaced_names[int(indices[second_index])-1]
second_digit_name = digit_names[int(indices[second_index])-1]
newlines.append(line.replace(first_digit_name, first_number).replace(second_digit_name, second_number))
return newlines
print(f'Part 1 Solution = {sum(digits(lines))}')
print(f'Part 2 Solution = {sum(digits(transform_digits(lines)))}')