Prolog. Работа со списками
Формулировка задачи:
У кого-нибудь есть какие-то идеи насчет этой задачи? Или хотя бы натолкните, пожалуйста, на мысль А то идей вообще нету
Условие: Реализовать очередь в виде списка. Заполнить очередь случайными действительными числами от -100 до 100. Переставить ее члены так, чтобы сначала расположились все ее отрицательные члены, а потом - все положительные. Порядок как среди положительных членов, так и среди отрицательных должен быть сохранен прежним. Для временного хранения положительных и отрицательных элементов использовать стеки. Значения элементов очереди до и после перестановки вывести на экран.
Решение задачи: «Prolog. Работа со списками»
textual
Листинг программы
domains int=integer intl=int* predicates app(intl,intl,intl) del_neg(intl,intl) del_pos(intl,intl) del_nzr(intl,intl) del_zer(intl,intl) task(intl,intl) clauses app([],X,X). app([H|T],X,[H|R]) :- app(T,X,R). del_neg([],[]). del_neg([H|T],R) :- H<0, del_neg(T,R). del_neg([H|T],[H|R]) :- H>0, del_neg(T,R). del_pos([],[]). del_pos([H|T],R) :- H>0, del_pos(T,R). del_pos([H|T],[H|R]) :- H<0, del_pos(T,R). del_nzr([],[]). del_nzr([0|T],[0|R]) :- del_nzr(T,R). del_nzr([H|T],R) :- H<>0, del_nzr(T,R). del_zer([],[]). del_zer([0|T],R) :- del_zer(T,R). del_zer([H|T],[H|R]) :- H<>0, del_zer(T,R). task(X,R) :- del_nzr(X,Z), del_zer(X,XX), del_neg(XX,P), del_pos(XX,N), app(P,Z,PZ), app(PZ,N,R).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д