Prolog第一个整数正好比第二个整数大1
Prolog first integer exactly 1 greater than second integer
如果第一个整数正好比第二个整数多 1,则程序应该 return 为真。
当前代码 return每次都是假的。
如果没有 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).
A Peano 数 x 恰好比 Peano 数 y 大 1,给定x = succ(y),所以我们可以这样写:
one_greater_than(succ(X), X).
鉴于第一个参数的形状为 succ(X)
,Prolog 的目标是 统一 succ/1
函子的唯一参数与第二个谓词。
如果第一个整数正好比第二个整数多 1,则程序应该 return 为真。
当前代码 return每次都是假的。
如果没有 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).
A Peano 数 x 恰好比 Peano 数 y 大 1,给定x = succ(y),所以我们可以这样写:
one_greater_than(succ(X), X).
鉴于第一个参数的形状为 succ(X)
,Prolog 的目标是 统一 succ/1
函子的唯一参数与第二个谓词。