1

私が以下を持っている場合:

friends(tim,joe).

もし私が行くならば:

?- friends(X,Y).

私は得るでしょう:

X=tim
Y=joe

新しい事実を追加せずに以下を印刷するにはどうすればよいですか

X=tim
Y=joe
X=joe
Y=tim
4

1 に答える 1

1

新しいルールを追加する必要があります:

are_friends(X,Y):- friends(X,Y).
are_friends(X,Y):- friends(Y,X).

次に、次のように尋ねます。

?- are_friends(X,Y).

プロローグが答える

X=tim, Y=joe   _

そしてそれはあなたの次のコマンドを待ちます。を押す;と、次の解決策が出力されます。

X=tim, Y=joe   ;

X=joe, Y=tim   _

適切な Prolog の方法で結果を生成するのではなく、結果を 2 回表示するには、次のように記述できます。

show_friends :- 
  friends(X,Y),
  write('X='), write(...), write(', Y='), write(...), nl,
  write('X='), write(...), write(', Y='), write(...), nl,
  fail.

しかし、これは本当に、本当に本当にただの偽物です。うーん。空欄を埋めます。

于 2013-04-28T08:55:20.697 に答える