From cbd876560f624b5dc1335e8dd6cd813a57019f19 Mon Sep 17 00:00:00 2001 From: kwout Date: Sun, 3 Dec 2023 12:06:34 -0500 Subject: [PATCH] 2023 day 3 part 2 solved --- 2023/3.py | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/2023/3.py b/2023/3.py index 3d2edda..59a8da9 100644 --- a/2023/3.py +++ b/2023/3.py @@ -1,8 +1,21 @@ lines = [i for i in open("input.txt", 'r').read().splitlines()] sum = 0 +sum2 = 0 nonqual = ['0','1','2','3','4','5','6','7','8','9','.'] +gears = {} +def checkValid(x,y): + if lines[x][y] == "*": + coord = str(x) + "," + str(y) + if coord not in gears: + gears[coord] = [int(num)] + else: + gears[coord].append(int(num)) + return True + if lines[x][y] not in nonqual: + return True + for i in range(len(lines)): columns = len(lines[i]) j = 0 @@ -19,19 +32,22 @@ for i in range(len(lines)): break lennum = len(num) for x in range(0 if j == 0 else j-1, columns if j + lennum == columns else j+lennum+1): - if i != 0: - if not lines[i-1][x] in nonqual: - valid = True - if i != len(lines)-1: - if not lines[i+1][x] in nonqual: - valid = True - if j != 0 and not lines[i][j-1] in nonqual: + if i != 0 and checkValid(i-1, x): + valid = True + if i != len(lines)-1 and checkValid(i+1, x): + valid = True + if j != 0 and checkValid(i, j-1): valid = True - if j+lennum != columns and not lines[i][j+lennum] in nonqual: + if j+lennum != columns and checkValid(i, j+lennum): valid = True if valid: sum += int(num) j += lennum - j += 1 + j += 1 -print(sum) \ No newline at end of file +for coord in gears: + if len(gears[coord]) == 2: + sum2 += gears[coord][0] * gears[coord][1] + +print(sum) +print(sum2) \ No newline at end of file