0

だからこれは私の.proファイルの内容です(AMZIPROLOG):

room(kitchen).
room(office).
room(hall).
room('dining room').
room(cellar).

door(office, hall).
door(kitchen, office).
door(hall, 'dining room').
door(kitchen, cellar).
door('dining room', kitchen).

location(desk,office).
location(apple,kitchen).
location(flashlight,desk).
location('washing machine',cellar).
location(nani,'washing machine').
location(broccoli,kitchen).
location(crackers,kitchen).
location(computer,office).
location(envelope,desk).
location(stamp,envelope).
location(key,envelope).

edible(apple).
edible(crackers).

tastes_yucky(broccoli).

here(kitchen).

is_located_in(T1,T2):-location(X,T2),is_located_in(T1,X).

私が達成したいのは、たとえばis_located_in(X、office)を使用すると、結果は次のようになるということです。

X=desk,
X=flashlight,
X=computer,
X=envelope,
X=stamp,
X=key,
no

(順不同)。

そうすれば、結果には、オフィスに直接配置されているものではなく、基本的にオフィス内のオブジェクトにあるものが含まれます。

これはソースです:http://www.amzi.com/AdventureInProlog/a8recurs.php

コードは問題ないと述べられていますが、テストすると、次のように返されます。

no

助けてください。ありがとう。

4

1 に答える 1

1

これを試してください(この順序で):

is_located_in(T1,T2):-location(T1,T2).
is_located_in(T1,T2):-location(X,T2),is_located_in(T1,X).
于 2012-12-14T13:41:11.557 に答える