这是一个可怕的例子,但是假设我有点a
,b
还有c
蓝色和红色线,例如line(blue,a)
表示a
蓝线上的点线。
point(a).
point(b).
point(c).
line(blue,a).
line(blue,b).
line(red,a).
line(red,c).
我想找出哪些点P
位于不止一条线上(所以a
在这种情况下,它位于蓝线和红线上)。
我开始了,得到了这个:
multiple_points(P) :- point(P), point(_,P).
当我运行查询时?- multiple_points(P).
,一行上的所有点都会出现,但我只想显示重复项以查看哪些点出现在多条线上。
是否有一种简单的单行方式只显示P
重复值?