From 7f47fd46ade42bb51cf1e95682af6c8516d27901 Mon Sep 17 00:00:00 2001 From: Tyrel Souza Date: Sun, 3 Dec 2023 16:29:10 -0500 Subject: [PATCH] comments --- 2023/python/day03.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/2023/python/day03.py b/2023/python/day03.py index c8d454f..645f1b6 100644 --- a/2023/python/day03.py +++ b/2023/python/day03.py @@ -8,6 +8,11 @@ from collections import defaultdict SYMBOLS="*%@#+-/$=&" def get_all_numbers_and_starting_coords(mat): + """ + for a coordinate, walks right until it encounters a non digit, + when it does, it adds that number string to a collection, + and starts over, walking right until it continues to next row + """ nums = [] for y, row in enumerate(mat): x = 0 @@ -20,12 +25,23 @@ def get_all_numbers_and_starting_coords(mat): x += len(num) return nums -def get_row_coords(x1,y, length): +def get_row_coords(x1, y, length): + """ + for a given x,y point, it just creates the rest of the x/y coords to the right of this coord for a run + """ coords = [] for x in range(x1, x1+length): coords.append((x,y)) return coords +def process_number(mx, coords, num): + line_coords = get_row_coords(*coords, len(num)) + for coord in line_coords: + any_symbols = [(cs, v) for cs,v in matrix.get_neighbor_coords(mx, *coord) if v in SYMBOLS] + if any_symbols: + return True, any_symbols[0] + return False, None + # @shared.profile def part1(mat): choose = [] @@ -40,15 +56,6 @@ def part1(mat): print(total) -def process_number(mx, coords, num): - line_coords = get_row_coords(*coords, len(num)) - for coord in line_coords: - any_symbols = [(cs, v) for cs,v in matrix.get_neighbor_coords(mx, *coord) if v in SYMBOLS] - if any_symbols: - return True, any_symbols[0] - return False, None - - # @shared.profile def part2(mat): splats = matrix.find_in_matrix(mat, "*", False) @@ -60,6 +67,7 @@ def part2(mat): valid, sc = process_number(mat, coords, num) if valid: symbols[(sc[0]['r'],sc[0]['c'])].append(num) + total = 0 for splat in splats: neighbors = symbols[splat]