from vorlesung.L08_graphen.graph import Graph, AdjacencyMatrixGraph from utils.project_dir import get_path graph = AdjacencyMatrixGraph() start = "" end = "" def read_file(filename: str = "data/aoc2212.txt"): """Read a file and return the content as a string.""" def adjust_char(char): """Adjust character for comparison.""" if char == 'S': return 'a' elif char == 'E': return 'z' return char global start, end with open(get_path(filename), "r") as file: quest = file.read().strip().splitlines() for row, line in enumerate(quest): for col, char in enumerate(line): label = f"{row},{col}" graph.insert_vertex(label) if char == "S": start = label if char == "E": end = label for row, line in enumerate(quest): for col, char in enumerate(line): for neighbor in [(row - 1, col), (row, col - 1), (row + 1, col), (row, col + 1)]: if 0 <= neighbor[0] < len(quest) and 0 <= neighbor[1] < len(line): if ord(adjust_char(quest[neighbor[0]][neighbor[1]])) <= ord(adjust_char(char)) + 1: label1 = f"{row},{col}" label2 = f"{neighbor[0]},{neighbor[1]}" graph.connect(label1, label2) # Lösung des Adventskalenders 2022, Tag 12 read_file("data/aoc2212test.txt") graph.graph() distance_map, predecessor_map = graph.bfs(start) print(distance_map[graph.get_vertex(end)]) print(graph.path(end, predecessor_map))