Habe folgende Aufgabe bekommen.
Auf einen engen steilen Gebirkspass begegnen sich 4 Autos.
Zwei Autos fahren Bergab und zwei Bergauf. Die Starße ist so
eng, dass Zwei Autos nicht aneinader vorbeifahren können.
Glücklicherweise befindet sich direkt am Treffpunkt eine
Ausweichstelle, die genau ein Auto aufnehmen kann.
In die Ausweichstelle kann aber nur vorwärts reingefahren und
auch nur vorwärts wieder rausgefahren werden.
Und habe dazu zurzeit dieses Programm geschrieben
Alles anzeigen
Frage: Bekomme zwar Lösungswege, gerate aber in eine Endlosschleife !!
Wie kann ich das so ändern, dass er alle möglichen Wege findet ???
Kann mir bitte einer Helfen ???? :cry: :cry:
Auf einen engen steilen Gebirkspass begegnen sich 4 Autos.
Zwei Autos fahren Bergab und zwei Bergauf. Die Starße ist so
eng, dass Zwei Autos nicht aneinader vorbeifahren können.
Glücklicherweise befindet sich direkt am Treffpunkt eine
Ausweichstelle, die genau ein Auto aufnehmen kann.
In die Ausweichstelle kann aber nur vorwärts reingefahren und
auch nur vorwärts wieder rausgefahren werden.
Und habe dazu zurzeit dieses Programm geschrieben
Quellcode
- nachunten(s(A,B,L,X,Y,Box),s(A2,B2,L2,X2,Y2,Box2)):-
- Box==leer,B==b,B2=Box,Box2=B,A2=A,L2=L,X2=X,Y2=Y;
- Box==leer,B==a,B2=Box,Box2=B,A2=A,L2=L,X2=X,Y2=Y;
- A\=leer,B==leer,A2=B,B2=A,L2=L,X2=X,Y2=Y,Box2=Box;
- B\=leer,L==leer,B2=L,L2=B,A2=A,X2=X,Y2=Y,Box2=Box;
- L\=leer,X==leer,L2=X,X2=L,A2=A,B2=B,Y2=Y,Box2=Box;
- X\=leer,Y==leer,X2=Y,Y2=X,A2=A,L2=L,B2=B,Box2=Box;
- X==leer,Box==a,X2=Box,Box2=X,A2=A,B2=B,L2=L,Y2=Y;
- X==leer,Box==b,X2=Box,Box2=X,A2=A,B2=B,L2=L,Y2=Y.
- nachoben(s(A,B,L,X,Y,Box),s(A2,B2,L2,X2,Y2,Box2)) :-
- X==x,Box==leer,X2=Box,Box2=X,A2=A,L2=L,B2=B,Y2=Y;
- X==y,Box==leer,X2=Box,Box2=X,A2=A,L2=L,B2=B,Y2=Y;
- B==leer,Box==x,B2=Box,Box2=B,A2=A,X2=X,L2=L,Y2=Y;
- B==leer,Box==y,B2=Box,Box2=B,A2=A,X2=X,L2=L,Y2=Y;
- Y\=leer,X==leer,Y2=X,X2=Y,A2=A,L2=L,B2=B,Box2=Box;
- X\=leer,L==leer,X2=L,L2=X,A2=A,B2=B,Y2=Y,Box2=Box;
- L\=leer,B==leer,L2=B,B2=L,A2=A,X2=X,Y2=Y,Box2=Box;
- B\=leer,A==leer,B2=A,A2=B,L2=L,X2=X,Y2=Y,Box2=Box.
- loese:-tiefensuche(s(a,b,leer,x,y,leer),s(x,y,leer,a,b,leer),[s(a,b,leer,x,y,leer)]),
- writeln(------------------------------------------------------),fail.
- ausgabe([]).
- ausgabe([Kopf|Rest]):- writeln(Kopf),ausgabe(Rest).
- tiefensuche(R,R,L) :-
- reverse(L,L2),ausgabe(L2),!.
- tiefensuche(Z1,Z3,L) :-
- nachunten(Z1,Z2),
- not(member(Z2,L)),
- tiefensuche(Z2,Z3,[Z2|L]);
- nachoben(Z1,Z2),
- not(member(Z2,L)),
- tiefensuche(Z2,Z3,[Z2|L]).
Frage: Bekomme zwar Lösungswege, gerate aber in eine Endlosschleife !!
Wie kann ich das so ändern, dass er alle möglichen Wege findet ???
Kann mir bitte einer Helfen ???? :cry: :cry: