非成员规则在Prolog中没有按预期工作

时间:2016-04-26 13:30:21

标签: list prolog logic negation prolog-dif

我正在尝试在Prolog中创建一个迷宫程序,其目的是找到一条从迷宫开始到迷宫中心点m的路线。迷宫由正方形组成,这些正方形使用四种颜色中的一种连接:蓝色,绿色,紫色或橙色。从开始到中心的路线遵循四种颜色的重复模式。

我创建了以下代码:

link2(A, Colour, B) :- link(A, Colour, B).       
link2(A, Colour, B) :- link(B, Colour, A).

changecolour(blue,green).
changecolour(green,purple).
changecolour(purple,orange).
changecolour(orange,blue).

route(A, Colour1, B, List2) :-
    link2(A, Colour1, B),
    append([A], [B], List2).
route(A, Colour1, B, List2) :-
    link2(A, Colour1, X),
    changecolour(Colour1,Colour2),
    append([A], List, List2),
    \+ member(A, List),
    route(X, Colour2, B, List).

出于某种原因,代码没有按预期工作,我不知道为什么。我有一种感觉它与否定(不是成员)规则有关,但有人可以告诉我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

您定义了changecolour并且从未使用过它;你使用nextcolour但从未定义它。