file = './ex.txt' #file = './ex2.txt' #file = './input.txt' from heapq import heappush, heappop def solve_reindeer_maze(maze): start = next((i, j) for i, row in enumerate(maze) for j, cell in enumerate(row) if cell == 'S') end = next((i, j) for i, row in enumerate(maze) for j, cell in enumerate(row) if cell == 'E') directions = [(0, 1), (1, 0), (0, -1), (-1, 0)] heap = [(0, start[0], start[1], 0)] visited = set() while heap: score, row, col, direction = heappop(heap) if (row, col) == end: return score if (row, col, direction) in visited: continue visited.add((row, col, direction)) for new_direction in range(4): new_row, new_col = row + directions[new_direction][0], col + directions[new_direction][1] if 0 <= new_row < len(maze) and 0 <= new_col < len(maze[0]) and maze[new_row][new_col] != '#': new_score = score + 1 if new_direction != direction: new_score += 1000 heappush(heap, (new_score, new_row, new_col, new_direction)) return float('inf') # Einlesen des Labyrinths und Lösen maze = [list(line.strip()) for line in open(file, 'r')] result = solve_reindeer_maze(maze) print(f"Die niedrigste mögliche Punktzahl ist: {result}")