Zum Inhalt
Prolog-Das Haus des Nikolaus
Aus ProgrammingWiki
<
Bergervei
Archivierte Version vom 2013-02-23T23:04:23+00:00.
Aktuelle Version
Vollständige Strecken
%Festlegung des Graphen (Nikolaushaus) kante(a,b). kante(b,c). kante(c,d). kante(d,e). kante(e,a). kante(b,d). kante(a,d). kante(e,b). verbunden(A,B):-kante(A,B). verbunden(A,B):-kante(B,A). %Rundstrecke rundstrecke(Route,Weg):- Route=[Anfang|_], findall([A,B], (kante(A,B),element(A,Route),element(B,Route)), Strecken), tsuche(Anfang,[Anfang],Weg,Strecken). %Tiefensuche tsuche(Knoten,Weg,Weg,[]):-!. tsuche(Knoten,Teilpfad,Weg,Strecken):- verbunden(Knoten,NKnoten), teilliste([Knoten,NKnoten],Strecken), streichliste([Knoten,NKnoten],Strecken,NStrecken), tsuche(NKnoten,[NKnoten|Teilpfad],Weg,NStrecken). %Suche nach allen möglichen Rundstrecken suche(Route):- findall(Weg,rundstrecke(Route,Weg),Liste), ausgabe(Liste). %Bildschirmausgabe ausgabe(Liste):-ausgabe_h(Liste,0). ausgabe_h([],Anzahl):-write('Es gibt '),write(Anzahl),write(' Moeglichkeit(en)!'),nl,!. ausgabe_h([Weg|Liste],Anzahl):- ausgabe_l(Weg),nl, NAnzahl is Anzahl+1, ausgabe_h(Liste,NAnzahl). ausgabe_l([X]):-write(X). ausgabe_l([X|Liste]):-ausgabe_l(Liste),write(', '),write(X). streichliste([A,B],[[A,B]|L],L):-!. streichliste([A,B],[[B,A]|L],L):-!. streichliste(X,[Y|L1],[Y|L2]):-streichliste(X,L1,L2). teilliste([A,B],[[A,B]|L]):-!. teilliste([A,B],[[B,A]|L]):-!. teilliste(X,[Y|L]):-teilliste(X,L). element(X,[X|L]):-!. element(X,[Y|L]):-element(X,L).
suche([a,b,c,d,e]).
ausführen
Seite
Quelltext
Versionen/Autoren
Konto registrieren
Anmelden
Navigation
Startseite
Letzte Änderungen
Alle Seiten
Einführungskurs
Hilfe
Dateien
Suche
Suchen
Werkzeuge
Links auf diese Seite
Spezialseiten