根据规则 Prolog 定义谓词
Define predicate from following the rules Prolog
我是 Prolog 的新手,我想将给定的规则转换为 Prolog 语言。
我必须定义一个谓词 p(X1, Y1, X2, Y2) ,其中 X1, Y1 是整数,X2 和 Y2 是从 X1、Y1 中获得的,遵循这些规则:
- 如果 Y1 ≤ 0 并且 |X1|≤−Y1 那么 X2 是 X1 + 1 和 Y2 是 Y1
- 否则如果 X1 > 0 和 |Y1| < X1 则 X2 为 X1,而 Y2 为 Y1+1
- 否则如果 Y1 > 0 且 −Y1 < X1 ≤ Y1 那么 X2 是X1−1,Y2是Y1
- else X2 是 X1 并且 Y2 是 Y1−1
我会提供指导,这是规则 1:
p(X1, Y1, X2, Y2) :-
Y1 =< 0,
abs(X1) =< -Y1,
% Cut, to prevent processing alternatives
!,
X2 is X1 + 1,
Y2 is Y1.
swi-prolog 中的示例输出:
?- p(-3, -5, X2, Y2).
X2 = -2,
Y2 = -5.
我是 Prolog 的新手,我想将给定的规则转换为 Prolog 语言。
我必须定义一个谓词 p(X1, Y1, X2, Y2) ,其中 X1, Y1 是整数,X2 和 Y2 是从 X1、Y1 中获得的,遵循这些规则:
- 如果 Y1 ≤ 0 并且 |X1|≤−Y1 那么 X2 是 X1 + 1 和 Y2 是 Y1
- 否则如果 X1 > 0 和 |Y1| < X1 则 X2 为 X1,而 Y2 为 Y1+1
- 否则如果 Y1 > 0 且 −Y1 < X1 ≤ Y1 那么 X2 是X1−1,Y2是Y1
- else X2 是 X1 并且 Y2 是 Y1−1
我会提供指导,这是规则 1:
p(X1, Y1, X2, Y2) :-
Y1 =< 0,
abs(X1) =< -Y1,
% Cut, to prevent processing alternatives
!,
X2 is X1 + 1,
Y2 is Y1.
swi-prolog 中的示例输出:
?- p(-3, -5, X2, Y2).
X2 = -2,
Y2 = -5.