我试图解决一个点属于该区域的问题。因此,我需要得到一个答案:一个点是否属于该区域。用户从键盘输入的点的坐标。当我尝试直接在规则中传输点的坐标时:belongsTo (1,1).
我得到了想要的结果(是或否),但是当我用键盘输入坐标时
write ("Input X:"), readreal (X),
write ("Input Y:"), readreal (Y),
belongsTo (X, Y).
那么答案将是“没有解决方案”或只有“2 个解决方案”(X = 0,Y = 0,X = 0,Y = 0,如果您通过点 (0,0))
这是完整的代码:
PREDICATES
square(real,real)
semicircle(real,real)
belongsTo(real,real)
CLAUSES
square(X,Y):-
X>=-1,X<=0,
Y>=-1,Y<=0.
semicircle(X,Y):-
X>=0,Y>=0,
X*X+Y*Y<=1.
belongsTo(X,Y):-
square(X,Y);
semicircle(X,Y),!.
GOAL
write("Input X: "), readreal(X),
write("Input Y: "), readreal(Y),
belongsTo(X,Y).
因此,我需要得到一个解决方案,如 YES(如果该点属于该区域)或 NO。