按要求定义谓词序言
define predicate prolog by requirements
我必须定义一个谓词 p(X, Y),其中 Y = f(X) 其中
根据这个要求,我该如何定义谓词?
几乎和那里写的一样,在不同的 X 条件下 Y 值的三种情况:
f(X, Y) :- X < 4, Y is X ^ 2 - 1.
f(X, Y) :- X >= 4, X =< 6, Y is sqrt(X) + 1.
f(X, Y) :- X > 6, Y is 9 - X.
或中间情况
f(X, Y) :- between(4, 6, X), Y is sqrt(X) + 1.
我最初发现它更具可读性,但改变了这种情况下的行为,这是一种权衡。
然后:
:- f(3, Y).
Y = 8
( zcompare/3 暗示了一种无需使用 cut !
即可摆脱选择点的方法,但前提是您限制为整数。
另一种不留下选择点的方法...
f(X,Y) :- X < 4 -> Y is X^2 - 1 ;
X =< 6 -> Y is sqrt(X) + 1 ;
Y is 9 - X .
我必须定义一个谓词 p(X, Y),其中 Y = f(X) 其中
根据这个要求,我该如何定义谓词?
几乎和那里写的一样,在不同的 X 条件下 Y 值的三种情况:
f(X, Y) :- X < 4, Y is X ^ 2 - 1.
f(X, Y) :- X >= 4, X =< 6, Y is sqrt(X) + 1.
f(X, Y) :- X > 6, Y is 9 - X.
或中间情况
f(X, Y) :- between(4, 6, X), Y is sqrt(X) + 1.
我最初发现它更具可读性,但改变了这种情况下的行为,这是一种权衡。
然后:
:- f(3, Y).
Y = 8
( zcompare/3 暗示了一种无需使用 cut !
即可摆脱选择点的方法,但前提是您限制为整数。
另一种不留下选择点的方法...
f(X,Y) :- X < 4 -> Y is X^2 - 1 ;
X =< 6 -> Y is sqrt(X) + 1 ;
Y is 9 - X .