Prolog - 如何判断两件事是否属于同一组?

时间:2014-04-25 07:35:54

标签: prolog

这可能是一个非常简单的问题 - 我只是在学习并坚持下去。

说我有类似的东西:

%facts
car(blah1, red).
car(blah2, blue).
car(blah3, red).
car(blah4, red).
car(blah5, black).

现在我想制定一个规则,如果我输入' blah'我会收回所有也是红色的等等。所以,例如,

%rule
is_same(Blah_x, Blah_y) :-

如果我输入is_same(blah1, X),则返回X = blah1, X = blah3, X = blah4。如果我输入了is_same(blah1, blah2),则不会返回任何内容(因为blah1redblah2blue

1 个答案:

答案 0 :(得分:4)

我相信这就是你要求的:

is_same(X, Y) :- car(X, Color), car(Y, Color).

示例输入和输出:

?- is_same(blah1, X).
X = blah1 ;
X = blah3 ;
X = blah4.

?- is_same(blah1, blah3).
true .

?- is_same(blah1, blah2).
false.