Я новичок в 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) разбить список на список Prefix (который может содержать 9 с), список [9] с одним элементом и список Suffix (который не содержит 9), затем объединить Prefix и Suffix списки. Напишите предикат, который обнаруживает Prefix и Suffix, заданные списком L.
Prefix
[9]
Suffix
L
Если мы не думаем процедурно или вдоль линии «сколько это будет стоить в ЦП», предикат decompose(List,Prefix,Suffix), который обнаруживает Prefix и Suffix, можно записать в одном единственном предложении чисто логическое утверждение, использующее append/2 и member/2 и отрицание в качестве сбоя.
decompose(List,Prefix,Suffix)
append/2
member/2
Нужна только вторая строка, чтобы охватить случай, когда в List нет цифр 9 для начала.
List