Напишите предикат, предшествует/2, который берет два атома в качестве своих аргументов и успешно согласуется - Prolog
Формулировка задачи:
Напишите предикат, предшествует/2, который берет два атома в качестве своих аргументов и успешно согласуется, если первый из них в лексикографическом порядке предшествует второму.
Предикат предшествует(+X,+Y) должен иметь в качестве входных аргумента два атома (переменной аргумент не может быть, и аргументы не сводятся к одному символу). Примеры правильной работы:
?- предшествует (aaaazzzzzzzzzzzzzzz,aab).
Yes
?- предшествует (aaaazzzzzzzzzzzzzzz, aaaac).
No
?- предшествует(example,examples).
Yes
?- предшествует (example,bexamples).
No
Лексикографический порядок для атомов определяется так же как для строк в Паскале. Не используйте встроенный оператор сравнения @=< для атомов в Прологе.
Помогите пожалуйста решить данную задачу, пролог только начал изучать и логики в нем не вижу....
Код примерно такой, но не зависимо от введенных слов пишет false
Решение задачи: «Напишите предикат, предшествует/2, который берет два атома в качестве своих аргументов и успешно согласуется»
textual
Листинг программы
?- lx(`alpha`, `beta`). true. ?- lx(`beta`,`alpha`). false.
Объяснение кода листинга программы
- Задача состоит в написании предиката, который проверяет, что один атом предшествует другому.
- Предикат называется
precedes/2. - Предикат принимает два аргумента -
XиY. - Если
XпредшествуетY, то предикат возвращаетtrue, в противном случае -false. - В коде приведен пример использования предиката:
?- lx(alpha,beta). - В этом примере предикат проверяет, что
alphaпредшествуетbeta. - Так как в данном случае это условие выполняется, то предикат возвращает
true. - Второй пример:
?- lx(beta,alpha). - В этом примере предикат проверяет, что
betaпредшествуетalpha. - Так как это условие не выполняется, то предикат возвращает
false.