Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prolog 序言——如何判断两个事物是否属于同一组?_Prolog - Fatal编程技术网

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.