Prolog 序言——如何判断两个事物是否属于同一组?
这可能是一个非常简单的问题——我只是在学习,并坚持到底 假设我有这样的东西:Prolog 序言——如何判断两个事物是否属于同一组?,prolog,Prolog,这可能是一个非常简单的问题——我只是在学习,并坚持到底 假设我有这样的东西: %facts car(blah1, red). car(blah2, blue). car(blah3, red). car(blah4, red). car(blah5, black). 现在我想制定一个规则,如果我输入‘废话’,我会得到所有同样是红色的废话。那么比如说, %rule is_same(Blah_x, Blah_y) :- 如果我输入的是相同的(blah1,X)返回值将是X=blah1,X=blah
%facts
car(blah1, red).
car(blah2, blue).
car(blah3, red).
car(blah4, red).
car(blah5, black).
现在我想制定一个规则,如果我输入‘废话’,我会得到所有同样是红色的废话。那么比如说,
%rule
is_same(Blah_x, Blah_y) :-
如果我输入的
是相同的(blah1,X)
返回值将是X=blah1,X=blah3,X=blah4
。如果我输入的是相同的(blah1,blah2)
则返回否(因为blah1
是红色的,而blah2
是蓝色的
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.
我相信这就是你想要的:
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.