Удаление положительных элементов из списка (Турбо Пролог) - Prolog
Формулировка задачи:
Здравствуйте, помогите пожалуйста с решением задач в Turbo Prolog.
Составьте программу удаления положительных элементов списка A(N).
Помогите пожалуйста
Решение задачи: «Удаление положительных элементов из списка (Турбо Пролог)»
textual
Листинг программы
domains int=integer intl=int* predicates del_pos(intl,intl) clauses del_pos([],[]). del_pos([H|T],[H|Z]) :- H<=0, del_pos(T,Z). del_pos([H|T],Z) :- H>0, del_pos(T,Z).
Объяснение кода листинга программы
domains- определения типов данных используемых в программе. В данном случае,intэто целочисленный тип данных, аintlэто указатель на массив целочисленных значений.predicates- определения пользовательских функций (предикатов) используемых в программе. В данном случае,del_posэто предикат, который будет использоваться для удаления положительных чисел из списка.clauses- определения правил (условных выражений) для работы предикатов. В данном случае, у нас есть три правила:- Первое правило
del_pos([],[]).говорит о том, что если входной список пустой, то выходной список также будет пустым. - Второе правило
del_pos([H|T],[H|Z]) :- H<=0, del_pos(T,Z).говорит о том, что если первый элемент спискаHменьше или равен нулю, то он должен быть включен в выходной список, а оставшаяся часть спискаTдолжна быть обработана рекурсивно с помощью функцииdel_pos. - Третье правило
del_pos([H|T],Z) :- H>0, del_pos(T,Z).говорит о том, что если первый элемент спискаHбольше нуля, то он должен быть исключен из выходного списка, а оставшаяся часть спискаTдолжна быть обработана рекурсивно с помощью функцииdel_pos.
- Первое правило