From 2db5e5361d4206ab1636fc4208bec9d93526b03b Mon Sep 17 00:00:00 2001 From: Botond Hende Date: Sat, 7 Dec 2024 11:13:24 +0100 Subject: 2024 day5 and day6 first part --- 2024/day6/solve.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 2024/day6/solve.py (limited to '2024/day6/solve.py') diff --git a/2024/day6/solve.py b/2024/day6/solve.py new file mode 100644 index 0000000..7e8a972 --- /dev/null +++ b/2024/day6/solve.py @@ -0,0 +1,55 @@ +import sys + +lines = [] +with open("input") as f: + for line in f.readlines(): + lines.append(list(line.strip())) + +found_guard = False +guard_row_idx = None +guard_col_idx = None +direction = None + +directions = [(-1, 0), (0, 1), (1, 0), (0, -1)] + +for line_idx, line in enumerate(lines): + for icon_idx, guard_icon in enumerate(("^", ">", "v", "<")): + if guard_icon in line: + guard_row_idx = line_idx + guard_col_idx = line.index(guard_icon) + direction = directions[icon_idx] + found_guard = True + break + + if found_guard: + break + +if not found_guard: + sys.exit("Could not found guard.") + +row_count = len(lines) +col_count = len(lines[0]) +while True: + lines[guard_row_idx][guard_col_idx] = "X" + new_row_idx = guard_row_idx + direction[0] + new_col_idx = guard_col_idx + direction[1] + + if new_row_idx < 0 or new_row_idx >= row_count or new_col_idx < 0 or new_col_idx >= col_count: + break + + if lines[new_row_idx][new_col_idx] == "#": + dir_idx = directions.index(direction) + if dir_idx == len(directions) - 1: + dir_idx = 0 + else: + dir_idx += 1 + direction = directions[dir_idx] + else: + guard_row_idx = new_row_idx + guard_col_idx = new_col_idx + +count = 0 +for line in lines: + count += line.count("X") + +print(count) -- cgit v1.2.3-70-g09d2