Пролог - предикат для сравнения трех аргументов
Я новичок в прологе, и я уже сделал некоторое кодирование, но у меня есть задача, которую я не могу выполнить. Не могли бы вы рассказать мне, как описать рабочий предикат, который сравнивает arg1, arg2 и arg3 и возвращает yes это arg1>arg2>arg3? Спасибо заранее!
Szymon
1 ответ
Решение довольно простое:
compare3(X, Y, Z):-
X>Y,
Y>Z.
?- compare3(5,4,3).
true.
Имейте в виду, что вы не можете определить предикаты с произвольным числом входных параметров (так очевидно, compare/3
можно было вызвать только с 3-мя входами). Чтобы сделать его более гибким, вы можете вставить элемент в список и переписать его следующим образом
myCompare([]).
myCompare([_]):- !.
myCompare([A,B|T]):-
A>B,
myCompare([B|T]).
?- myCompare([5,4,3]).
true.
Сейчас myCompare/1
принимает список и возвращает true, если список отсортирован, в противном случае - false.