Удалить из списка в SWI-Prolog - PullRequest
0 голосов
/ 16 января 2020

Я новичок в SWI-Prolog и у меня проблема. Пожалуйста, помогите мне. Как я могу удалить последнее вхождение 9 из списка?

Примеры:

?- delete([9,9,9])
[9,9]
?- delete([9,4,1,2,3,9,53,2,9,2])
[9,4,1,2,3,9,53,2,2]

1 Ответ

0 голосов
/ 16 января 2020

Вы должны 1) разбить список на список Prefix (который может содержать 9 с), список [9] с одним элементом и список Suffix (который не содержит 9), затем объединить Prefix и Suffix списки. Напишите предикат, который обнаруживает Prefix и Suffix, заданные списком L.

Если мы не думаем процедурно или вдоль линии «сколько это будет стоить в ЦП», предикат decompose(List,Prefix,Suffix), который обнаруживает Prefix и Suffix, можно записать в одном единственном предложении чисто логическое утверждение, использующее append/2 и member/2 и отрицание в качестве сбоя.

Нужна только вторая строка, чтобы охватить случай, когда в List нет цифр 9 для начала.

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