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/1また、述語の命名: is notにも注意する必要がありhouse/1ます。述語houses/1がどこにも定義されていません (エラー メッセージが間違っています。実際には と表示されますpredicate houses/1 is undeclared)。

于 2020-06-07T12:39:49.680 に答える