From f72708ca06832f5f42dbc9b704ba4c7d97b28357 Mon Sep 17 00:00:00 2001 From: Sijmen Date: Fri, 1 Dec 2023 14:46:18 +0100 Subject: [PATCH] Optimise day 1 --- day1.py | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/day1.py b/day1.py index e92e193..7c64e3e 100644 --- a/day1.py +++ b/day1.py @@ -12,6 +12,7 @@ digit_map = { "nine": 9, } digits = list(digit_map) +firstletters = set(s[0] for s in digits) inp = list(fileinput.input()) @@ -19,13 +20,11 @@ inp = list(fileinput.input()) # Part 1 # part1 = sum( - [ - int( - next(x for x in y if x.isdigit()) - + next(x for x in reversed(y) if x.isdigit()) - ) - for y in inp - ] + int( + next(x for x in line if x.isdigit()) + + next(x for x in reversed(line) if x.isdigit()) + ) + for line in inp ) print(part1) @@ -39,13 +38,30 @@ for line in inp: newline = [] for i in range(len(line)): + l = line[i:] + if line[i].isdigit(): + newline.append(line[i]) + break for digit in digits: - if line[i:].startswith(digit): + if l.startswith(digit): newline.append(str(digit_map[digit])) break else: - if line[i].isdigit(): - newline.append(line[i]) + continue + break + + for i in reversed(range(len(line))): + l = line[i:] + if line[i].isdigit(): + newline.append(line[i]) + break + for digit in digits: + if l.startswith(digit): + newline.append(str(digit_map[digit])) + break + else: + continue + break part2 += int(newline[0] + newline[-1])