Контрольная работа по "Функциональное и логическое программирование"

Автор: Пользователь скрыл имя, 28 Октября 2011 в 12:47, контрольная работа

Описание работы

Задание №1. Разработать рекурсивный вариант программы в функциональном стиле для решения предложенной ниже задачи.

Работа содержит 1 файл

Функциональное и логическое программирование.doc

— 84.50 Кб (Скачать)

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,T,T1)./* в противном случае удалить элемент из хвоста */ 

Комментированный  результат тестирования

?- proc([1,2,3,4,2],[3,7,4,2],Res).

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

Искомое решение

Информация о работе Контрольная работа по "Функциональное и логическое программирование"