From 50444c6f7a3af0695b296ee6b282b21b1366b9cf Mon Sep 17 00:00:00 2001 From: schoeffelbe82781 Date: Mon, 26 May 2025 12:35:24 +0200 Subject: [PATCH] Fixed Logicerror with double traversal of edge. --- data/hoehleLarger.txt | 3 ++- schoeffelbe/pr08.py | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/data/hoehleLarger.txt b/data/hoehleLarger.txt index 3124343..ddbf103 100644 --- a/data/hoehleLarger.txt +++ b/data/hoehleLarger.txt @@ -5,7 +5,8 @@ "Ost/West-Passage" <> "Schwefelgewölbe" "Schwefelgewölbe" > "Steiniger Pfad" "Schatzkammer" > "Nebelraum" -"Steiniger Pfad" > "Schatzkammer" +"Steiniger Pfad" <> "Schatzkammer" +"Steiniger Pfad" > "Höhleneingang" "Kristallhöhle" <> "Schwefelgewölbe" "Kristallhöhle" <> "Nebelraum" "Versteckter Gang" > "Kristallhöhle" diff --git a/schoeffelbe/pr08.py b/schoeffelbe/pr08.py index c4f65e6..301e112 100644 --- a/schoeffelbe/pr08.py +++ b/schoeffelbe/pr08.py @@ -56,7 +56,9 @@ class Graph: visited.add(currentNode) for neighbor in self.adjacencyList[currentNode]: edge = (currentNode, neighbor) - if neighbor not in visited and (edgesGonePassed is None or edge not in edgesGonePassed): + # We already went this Edge. Read Part3 as not allowing this to happen + edgeReverse = (neighbor, currentNode) + if neighbor not in visited and (edgesGonePassed is None or edge not in edgesGonePassed) and (edgesGonePassed is None or edgeReverse not in edgesGonePassed): # Pythonic way of saying neighbour, path no next clear neighbour # and union of edgesGone with current edge queue.append((neighbor, path + [neighbor], edgesGone | {edge})) @@ -103,6 +105,7 @@ if __name__ == "__main__": goal = "Schatzkammer" shortestPath, edgesGoneInitial = caveGraph.breadthFirstSearch(start, goal) logger.debug(caveGraph.adjacencyList) + logger.debug(edgesGoneInitial) if shortestPath: print(f"Shortest path from {start} to {goal} is:")