1

ポイントがエリアに属するという問題を解決しようとしました。その結果、ポイントがエリアに属しているかどうかという答えを得る必要があります。ユーザーがキーボードから入力した点の座標。ポイントの座標をルールで直接転送しようとすると:belongsTo (1,1).目的の結果 (はいまたはいいえ) が得られますが、キーボードで座標を入力すると

write ("Input X:"), readreal (X),
write ("Input Y:"), readreal (Y),
belongsTo (X, Y).

その場合、答えは「解なし」または単に「2 つの解」になります (点 (0,0) を通過する場合、X = 0、Y = 0、X = 0、Y = 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 のような解決策を得る必要があります。

4

1 に答える 1