# Prolog Problem



## sabrina21 (31. März 2009)

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


```
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.
```


----------



## deepthroat (2. April 2009)

Hi.

Probier's mal hiermit:

```
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ß


----------

