Автор: Пользователь скрыл имя, 28 Октября 2011 в 12:47, контрольная работа
Задание №1. Разработать рекурсивный вариант программы в функциональном стиле для решения предложенной ниже задачи.
spo([X1|T],[X1|Y3]);
/* перенести элемент X1 в результирующий список или */
spisok([X1|Y1],[_|Y2]),
/* сформировать подсписок уровня иp элемента и */
spo(Y2,Y3).
/* сформировать список уровней */
spisok([],[]). /* НАЧАЛЬНЫЕ УСЛОВИЯ РЕКУРСИИ */
/* для пустого исходного и список уровней пустой */
spisok([X|Y],[[X]|Z]):-
/* голова исходного списка становится подсписком [X] в результирующем списке если */
spisok(Y,Z).
/* списки уровней хвост Y и Z */
udal(X,[X|T],T):-!. /* НАЧАЛЬНЫЕ УСЛОВИЯ РЕКУРСИИ */
/* если элемент
совпадает с головой то
udal(X,[Y|T],[Y|T1]):-udal(X,
Комментированный результат тестирования
?- proc([1,2,3,4,2],[3,7,4,2],
Res = [2,[3],[[4]]] ;
no
Искомое решение
?- concatx([1,2,3,4],[2,6,4],Res)
Res = [2,4] ;
no
Искомое решение
?- nomemb(3,[1,2,4,5]).
yes
?- memb(3,[1,2,4,5]).
no
?- spisok([[2]],Res).
Res = [[[2]]] ;
no
?- spo([1,2,3,4,2,5,4],Res).
Res = [1,[2],[[3]],[[[4]]],[[[[5]]]]
no
Искомое решение
?- udal(2,[3,2,1,4,2,5],Res).
Res = [3,1,4,2,5] ;
no
Искомое решение
Информация о работе Контрольная работа по "Функциональное и логическое программирование"