0

我有斑马拼图的问题。

    rightOf(A,B,(B,A,_,_,_)).
    rightOf(A,B,(_,B,A,_,_)).
    rightOf(A,B,(_,_,B,A,_)).
    rightOf(A,B,(_,_,_,B,A)).

    middleHouse(A,(_,_,A,_,_)).
    firstHouse(A,(A,_,_,_,_)).

    nextTo(A,B,(A,B,_,_,_)).
    nextTo(A,B,(_,A,B,_,_)).
    nextTo(A,B,(_,_,A,B,_)).
    nextTo(A,B,(_,_,_,A,B)).
    nextTo(A,B,(B,A,_,_,_)).
    nextTo(A,B,(_,B,A,_,_)).
    nextTo(A,B,(_,_,B,A,_)).
    nextTo(A,B,(_,_,_,B,A)).

    house[Nationality,Pet,Sport,Drinks,Colour].

    zebra_owner(Owner) :-
        houses(Houses),
        exists(house(Owner,zebra,_,_,_), Houses).

    length(5,Houses),
    exists(house(british,_,_,_,red),Houses),
    exists(house(spanish,dog,_,_,_),Houses),
    exists(house(_,_,_,coffe,green),Houses),
    exists(house(ukrainian,_,_,tea,_),Houses),
    rightOf(house(_,_,_,_,green),house(_,_,_,_,ivory),Houses),
    exists(house(_,snail,tennis,_,_),Houses),
    exists(house(_,_,chess,_,yellow),Houses),
    middleHouse(house(_,_,_,mlik,_),Houses),
    firstHouse(house(norwegian,_,_,_,_),Houses),
    nextTo(house(_,_,rugby,_,_),house(_,fox,_,_,_),Houses),
    nextTo(house(_,_,chess,_,_),house(_,horse,_,_,_),Houses),
    exists(house(_,_,volleyball,orangejuice,_),Houses),
    exists(house(japanese,_,_,_,_),Houses),
    nextTo(house(norwegian,_,_,_,_),house(_,_,_,_,blue),Houses),
    nextTo(house(_,_,_,tea,_),house(_,_,_,milo,_),Houses),
    exists(house(zebra_owner,zebra,_,_,_),Houses).

在下面

house[Nationality,Pet,Smokes,Drinks,Colour].

我看到错误:Singleton variables: house[Nationality,Pet,Smokes,Drinks,Colour]

当我写?- zebra_owner(Owner)

我看到了错误:procedure 'houses(A)' does not exist. Reachable from:zebra_owner(A)。`

4

1 回答 1

1

你不能写

house[Nationality,Pet,Sport,Drinks,Colour].

那是不存在的语法。

要表示该谓词house/1对 list 有效[Nationality,Pet,Sport,Drinks,Colour],请编写:

house([Nationality,Pet,Sport,Drinks,Colour]).

您还必须注意谓词命名:houses/1is not house/1。谓词houses/1无处定义(错误消息是错误的,应该说是predicate houses/1 is undeclared)。

于 2020-06-07T12:39:49.680 回答