Hallo zusammen,
ich habe ein kleines Problem mit Prolog, ich möchte den folgendem Code mit einem Prädikat ergänzen, "laengeDesKuerzestenWegs/2" das dann in der Liste mit Ergebnisses die kleinste Längenangabe ermittelt. Aber ich stecke an der Stelle ganz schön fest und weiss nicht, wie ich dieses Prädikat in meinen Code sinnigerweise einbinden kann, vielleicht ist jemadem hier so ein Problem schonmal begegnet!? Ich bin für jede Hilfe dankbar.
Gruß
weg(ort(bahnhof), ort(krieg,friedrich)). wegsuche2(X, Y, [Y], 1) :-
weg(ort(bahnhof), weg(X, Y).
ort(lautenschlager,kronen)). wegsuche2(X, Y, [Z|Weg1], L) :-
weg(ort(krieg,friedrich), weg(X, Z),
ort(friedrich,kronen)). wegsuche2(Z, Y, Weg1, L1),
weg(ort(lautenschlager,kronen), L is L1 + 1.
ort(friedrich,kronen)). wegsuche(X, Y, [L, X|Weg]) :-
weg(ort(friedrich,kronen), wegsuche2(X, Y, Weg, L1),
ort(krieg,kronen)). L is L1 + 1.
weg(ort(friedrich,kronen), ort(uni)).
weg(ort(krieg,kronen), ort(krieg,keppler)). findeWeg(X, Y) :-
weg(ort(krieg,keppler), ort(uni)). bagof(Weg1, wegsuche(X, Y, Weg1), Wege),
write(Wege).
findeWeg(X, Y) :-
bagof(Weg1, wegsuche(X, Y, Weg1), Wege),
laengeDesKuerzestenWegs(Wege, Laenge),
nl, nl,
write('Der kürzeste Weg ist '),
write(Laenge), write(' Stationen lang.'),
nl.