nicht die Regel in prolog funktioniert nicht wie erwartet
Ich versuche zu schreiben, ein einfaches Labyrinth-such-Programm in prolog, bevor ich einen Raum hinzuzufügen besucht Liste, die ich bin der überprüfung, ob Sie bereits ein Mitglied der angesehenen Liste. Aber ich kann nicht ankommen dieses zu wirken, auch wenn ich den code aus dem Buch:
d(a,b).
d(b,e).
d(b,c).
d(d,e).
d(c,d).
d(e,f).
d(g,e).
go(X, X, T).
go(X, Y, T) :-
(d(X,Z) ; d(Z, X)),
\+ member(Z,T),
go(Z, Y, [Z|T]).
Was mache ich falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrem Programm scheint ok zu sein.
Ich denke das problem ist, dass Sie in Berufung gehen/3 mit dem Dritten argument nicht instanziierten.
In diesem Fall wird das Mitglied(X, T) ist immer erfolgreich, so dass die Klausel.
Nennen Sie Ihr Prädikat mit der leeren Liste als Dritten parameter:
z.B.
Wenn Sie wieder den Pfad sollten Sie erwägen, einen anderen parameter zu gehen, wie diese: