From e300e71e8a5704118037f672be8bf3570d6f1041 Mon Sep 17 00:00:00 2001 From: Brechtje van Gessel Date: Thu, 4 Dec 2025 20:56:54 +0100 Subject: [PATCH] solved day 4, part 2! --- brechtje/4/4-2.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 brechtje/4/4-2.py diff --git a/brechtje/4/4-2.py b/brechtje/4/4-2.py new file mode 100644 index 0000000..8bafd35 --- /dev/null +++ b/brechtje/4/4-2.py @@ -0,0 +1,45 @@ +raw_input = open('input.txt', 'r').read().splitlines() + +input = [] + +for line in raw_input: + input.append(list(line)) + +surrounding_spaces = [ + {'x': -1, 'y': -1}, + {'x': 0, 'y': -1}, + {'x': 1, 'y': -1}, + {'x': -1, 'y': 0}, + {'x': 1, 'y': 0}, + {'x': -1, 'y': 1}, + {'x': 0, 'y': 1}, + {'x': 1, 'y': 1} +] + +prev_answer = 0 +answer = 0 +x_max = len(input[0]) - 1 +y_max = len(input) - 1 + +while True: + for y, line in enumerate(input): + for x, char in enumerate(line): + if char == "@": + rolls = 0 + for space in surrounding_spaces: + current_x = x + space['x'] + current_y = y + space['y'] + if current_x < 0 or current_y < 0 or current_x > x_max or current_y > y_max: + continue + elif input[current_y][current_x] == "@": + rolls += 1 + if rolls > 3: + break + if rolls < 4: + answer += 1 + input[y][x] = "." + if answer == prev_answer: + break + prev_answer = answer + +print(answer)