2012-01-25 3 views
0

結果:Prologのカットとクエリは、プロローグプログラムで

town(a). 
town(b). 
town(c). 
town(d). 
dam(e). 
dam(f). 
link(a,b). 
link(a,c). 
link(c,d). 
link(b,d). 
link(b,c). 
link(c,e). 
link(a,e). 
link(d,f). 
neighbour(X,Y):- link(X,Y) ; link(Y,X). 

は、これらには、以下のクエリから正しい結果です:

クエリ1から?-dam(X), once(neighbour(X,Y)),town(Y).

結果:X=e Y=c; X=f Y=d

クエリ2 - ?-dam(X), neighbour(X,Y),!,town(Y).

結果:X=e Y=c

クエリ3から?-dam(X),!,neighbour(X,Y),town(Y).

結果:X=e Y=c; X=e Y=a

+1

これは宿題だと思います。任意のプロローグシステムで自分で試すことができます。 – gusbro

+0

3つのすべてについて「いいえ」が返されますが、私は間違いがないと確信しています。 –

+0

あなたが期待している結果は正しいです。これらのクエリに「いいえ」が返された場合は、コードを参照していない(ロードしている)と確信しています。 – gusbro

答えて

0

答えは正しいです。目標(ゴール)はGoal、!、つまり3番目のクエリ「dam(X)、!、隣人(X、Y)、町(Y)」と定義されています。 「一度(ダム(X))、隣人(X)、町(X)」と同等です。

関連する問題