% Graf nieskierowany neighborroom(X, Y, W) :- gallery(X, Y, W). neighborroom(X, Y, W) :- gallery(Y, X, W). % Lista węzłów zakazanych avoid([prages, n, targowek]). % Rekurencyjne poszukiwanie drogi route(End, End, _, 0, VisitedRooms) :- member(End, VisitedRooms), reverse(VisitedRooms, Path), write(Path), nl. route(Start, End, StartWeight, TotalWeight, VisitedRooms) :- neighborroom(Start, Next, Weight), avoid(DangerousRooms), \+ member(Next, DangerousRooms), \+ member(Next, VisitedRooms), NewWeight is StartWeight + Weight, route(Next, End, NewWeight, TotalWeight, [Next|VisitedRooms]).