Prolog Problem

sabrina21

Grünschnabel
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ß
Sabrina

Code:
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.
 
Hi.

Probier's mal hiermit:
Code:
laengeDesKuerzestenWegs([[L | _]], L).
laengeDesKuerzestenWegs([[L | _] | R], Laenge) :- laengeDesKuerzestenWegs(R, LR), min(L, LR, Laenge).
Das Prädikat min/3 ist einfach, das lass ich jetzt mal weg.

Gruß
 

Neue Beiträge

Zurück