Пролог - предикат для сравнения трех аргументов

Я новичок в прологе, и я уже сделал некоторое кодирование, но у меня есть задача, которую я не могу выполнить. Не могли бы вы рассказать мне, как описать рабочий предикат, который сравнивает 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.

Другие вопросы по тегам