Напишите предикат, который определяет, находится ли список в порядке возрастания - PullRequest
0 голосов
/ 25 апреля 2018

Мне даны следующие предикаты:

q8([]):-
q8([X]):-
q8([H|T]):-

, которые должны обеспечить следующий вывод

q8([2, 5, 8, 8, 8, 9]).
true.
q8([8, 5, 2, 8, 9]).
false.

Моя попытка была:

q8([]):-true.
q8([X]):-true.
q8([H|T]):- H<T, q8(T).

Однакоэто терпит неудачу, потому что это пытается объединить tail моего списка к q8([X]), который учитывает только один элемент.Я не совсем уверен, как обойти это.

Чтобы было понятнее, если вы запустите q8([2,5,8,8,8,9]).Я получаю сообщение об ошибке, потому что [5,8,8,8,9] не может объединиться с X.Это никогда не дойдет до третьего определенного q8 predicate.

Я делаю практические проблемы для своего финала, так что вы, ребята, не помогаете с домашней работой!лол

1 Ответ

0 голосов
/ 26 апреля 2018
q8([]):-true.
q8([_X]):-true.
q8([H1,H2|T]):- H1=<H2, q8([H2|T]).

В третьем предложении вам нужно взглянуть на первые два элемента в списке, затем вам нужно использовать меньше или равно, и, наконец, вам нужно повторить сохранение второго снятого элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...