Пролог первого целого числа ровно на 1 больше второго целого - PullRequest
0 голосов
/ 06 декабря 2018

Программа должна вернуть true, если первое целое число ровно на 1 больше, чем второе целое число.

Текущий код возвращает false каждый раз.

Без строки abs (XY) == 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 голосов
/ 06 декабря 2018

A Peano число x ровно на единицу больше, чем число Peano y , учитывая x = succ (y) , поэтомуздесь мы можем написать так:

one_greater_than(succ(X), X).

Учитывая, что первый аргумент имеет форму succ(X), Пролог будет стремиться к унификации единственному аргументу функтора succ/1 свторой предикат.

...