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: list[str]) -> list[int]: 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: list[str]) -> list[str]: 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)))}')