Содержание
- 2. Типовые процедуры обработки списков Типовые процедуры обработки списков не являются стандартными предикатами системы программирования языка Пролог.
- 3. Предикат add Предикат add(X,Y,Z) истинен, если список Z получается добавлением терма Х в начало списка Y.
- 4. Декларативное описание предиката add Декларативное описание предиката add формулируется следующим образом: Терм X является головой списка
- 5. Предикаты revers1 и revers2. Предикаты revers1 и revers2 являются предикатами обращения списков и определяют одно и
- 6. Предикаты revers1 и revers2. Процедура revers определяется двумя способами: простым обращением; обращением с накоплением.
- 7. Предикаты revers Предикат revers(X,Y) истинен, если список Y содержит все элементы списка Х, которые записаны в
- 8. Простое обращение. Декларативное определение предика revers1 1) обращенный пустой список есть пустой список; 2) если список
- 9. Процедура простого обращения Простое обращение выполняется процедурой revers1, которая использует процедуру append и состоит из двух
- 10. Обращение с накоплением В процедуре revers2 введен дополнительный предикат rev с тремя аргументами⎯списками, где первый аргумент
- 11. Декларативное определение предиката rev Декларативное определение предиката rev формулируется следующим образом: 1) если первый аргумент есть
- 12. Декларативное определение предиката rev 2) первый аргумент⎯ непустой список [H|Хs], и его можно разделить на голову
- 13. Процедура revers2 Обращение списка с накоплением выполняется процедурой revers2, состоящей из трех предложений и содержит дополнительный
- 14. Предикат delete Предикат delete(X,L,M) принимает значение “истина”, если список M получается в результате удаления первого вхождения
- 15. Декларативное описание предикат delete Декларативное описание предиката next формулируется следующим образом: 1) Если X ⎯ голова
- 16. Декларативное описание предикат delete 3) Если X не принадлежит списку L, то предикат delete(X,L, M) ложен.
- 17. Процедура delete Процедура delete(X,Y,L) состоит из двух правил: delete(X,[X|B],B):⎯!. delete(X,[Y|L],[Y|M]):⎯ delete(X,L,M).
- 18. Предикат number_list Предикат number_list(L) определяет, является ли список X списком числовых термов. Схема отношения этого предиката
- 19. Декларативное описание предиката number_list(L) 1) Список L включает один элемент Х. Тогда предикат number_list([X]) истинен, если
- 20. Процедура number_list Процедура number_list(X,Y) состоит из двух правил: number_list([]):⎯ number(X). number_list(X,[_|T]): ⎯ number(X), number_list(X,T). Предикат number(X)
- 21. Предикат sumlist Предикат sumlist(L,Sum) определяет сумму элементов числового списка. Схема отношения этого предиката имеет вид: sumlist(
- 22. Декларативное описание предиката sumlist(L) Сумма элементов пустого списка равна нулю. Если исходный список состоит L из
- 23. Процедура sumlist Процедура sumlist(L,Sum) состоит из двух правил: sumlist([ ],0). sumlist([H|T],Sum):⎯ sumlist(T,SumT), Sum is SumT+H.
- 24. Предикат delrepeat Предикат delrepeat (L,LS) истинен, если список получается из списка S путем удаления всех повторений
- 25. Предикат delrepeat Удаление повторений элементов выполняется процедурой delrepeat с накоплением списка, состоящей из четырех предложений и
- 26. Декларативное описание предиката delrepeat 1) если первый аргумент есть пустой список, то второй и третий аргументы
- 27. Декларативное описание предиката delrepeat 3) если первый аргумент⎯ непустой список [H|Хs], и голова Н не принадлежит
- 28. Процедура delrepeat delrepeat(S,SF):-delrep(S,[ ],SF). delrep([ ],S,S). delrep([H|T],S1,SF):-member(H,T),!,delrep(T,S1,SF). delrep([H|T],S1,SF):-append(S1,[H],S2),delrep(T,S2,SF).
- 29. Полный текст процедуры delrepeat delrepeat(S,SF):-delrep(S,[ ],SF). delrep([ ],S,S). delrep([H|T],S1,SF):-member(H,T),!, delrep(T,S1,SF). delrep([H|T],S1,SF):-append(S1,[H],S2), delrep(T,S2,SF). member(X,[X|_]). member(X,[Y|T]):-member(X,T). append([],X,X). append([H|T1],X,[H|T2]):-append(T1,X,T2).
- 31. Скачать презентацию