diff --git a/3.py b/3.py new file mode 100644 index 0000000..da5938e --- /dev/null +++ b/3.py @@ -0,0 +1,29 @@ +import sys +import heapq + +output_two = 0 +output_twelve = 0 +file = '3.input' if len(sys.argv) <= 1 else sys.argv[1] +for line in open(file).readlines(): + first_seen = {} # digit to first index + last_seen = {} # digit to last index + for i, digit in enumerate(line.strip()): + first_seen.setdefault(int(digit), i) + last_seen[int(digit)] = i + + max_all = max(first_seen.keys()) # largest digit (always included) + if last_seen[max_all] > first_seen[max_all]: # if it appears twice, just use it + output_two += max_all * 11 + continue + + try: + # first search right of the max digit + max_right = max(digit for digit, i in last_seen.items() if i > first_seen[max_all]) + output_two += max_all * 10 + max_right + except ValueError: + # search left for max digit + max_left = max(digit for digit, i in last_seen.items() if i < first_seen[max_all]) + output_two += max_left * 10 + max_all + +print(f'p1: {output_two}') +print(f'p2: {output_twelve}') \ No newline at end of file diff --git a/3.test b/3.test new file mode 100644 index 0000000..6b1df6a --- /dev/null +++ b/3.test @@ -0,0 +1,4 @@ +987654321111111 +811111111111119 +234234234234278 +818181911112111 \ No newline at end of file