advent of code 2025

day 3 part 1

kot.pink 9e4fa252 d46a294a

verified
+33
+29
3.py
··· 1 + import sys 2 + import heapq 3 + 4 + output_two = 0 5 + output_twelve = 0 6 + file = '3.input' if len(sys.argv) <= 1 else sys.argv[1] 7 + for line in open(file).readlines(): 8 + first_seen = {} # digit to first index 9 + last_seen = {} # digit to last index 10 + for i, digit in enumerate(line.strip()): 11 + first_seen.setdefault(int(digit), i) 12 + last_seen[int(digit)] = i 13 + 14 + max_all = max(first_seen.keys()) # largest digit (always included) 15 + if last_seen[max_all] > first_seen[max_all]: # if it appears twice, just use it 16 + output_two += max_all * 11 17 + continue 18 + 19 + try: 20 + # first search right of the max digit 21 + max_right = max(digit for digit, i in last_seen.items() if i > first_seen[max_all]) 22 + output_two += max_all * 10 + max_right 23 + except ValueError: 24 + # search left for max digit 25 + max_left = max(digit for digit, i in last_seen.items() if i < first_seen[max_all]) 26 + output_two += max_left * 10 + max_all 27 + 28 + print(f'p1: {output_two}') 29 + print(f'p2: {output_twelve}')
+4
3.test
··· 1 + 987654321111111 2 + 811111111111119 3 + 234234234234278 4 + 818181911112111