Prolog第一个整数比第二个整数大1

时间:2018-12-06 18:06:41

标签: prolog successor-arithmetics

如果第一个整数比第二个整数正好多1,则程序应返回true。

当前代码每次都返回false。

没有abs(X-Y)== 1行,它可以检查第二个整数是否大于第一个整数,但是它应该检查差值是否恰好为1。

expected output:

greater_than(succ(succ(0)),succ(0)).
yes
greater_than(succ(succ(0)),succ(succ(succ(0))))) 
no

current code :
greater_than(succ(X),0).
greater_than(succ(X),succ(Y)) :-
   abs(X-Y) == 1,
   greater_than(X,Y).

1 个答案:

答案 0 :(得分:0)

在给定 x = succ(y)的情况下, Peano x 比Peano数 y 大1。 em>,所以我们可以在这里这样写:

one_greater_than(succ(X), X).

鉴于第一个参数的形状为succ(X),Prolog的目标是函子的唯一参数与第二个谓词统一。