import re from utils.project_dir import get_path from vorlesung.L08_graphen.graph import Graph, AdjacencyListGraph, AdjacencyMatrixGraph def read_cave_into_graph(graph: Graph, filename: str): """Read a cave description from a file and insert it into the given graph.""" filename = get_path(filename) with open(filename, "r") as file: lines = file.readlines() for line in lines: # match a line with two node names and an optional direction m = re.match(r"(^\s*\"(.*)\"\s*([<>]*)\s*\"(.*)\"\s*)", line) if m: startnode = m.group(2) endnode = m.group(4) opcode = m.group(3) graph.insert_vertex(startnode) graph.insert_vertex(endnode) if '>' in opcode: graph.connect(startnode, endnode) if '<' in opcode: graph.connect(endnode, startnode) graph = AdjacencyListGraph() # graph = AdjacencyMatrixGraph() read_cave_into_graph(graph, "data/hoehle.txt") _, predecessor_map = graph.bfs('Höhleneingang') path = graph.path('Schatzkammer', predecessor_map) print(path) _, predecessor_map = graph.bfs('Schatzkammer') path = graph.path('Höhleneingang', predecessor_map) print(path) graph.graph("Höhle")