Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Работа со списками

Автор: 18192123 28.03.2009 23:29

Здравствуйте!
Задана процедура "присоединить":

Код

присоединить([],S,S).
присоединить([X|S1], S2, [X|S3]):- присоединить (S1, S2,S3).

Нужно написать запрос к процедуре “присоединить”, в котором два существующих списка объединяются в один – третий список: а именно - запрос, генерирующий все возможные комбинации подсписков, которые могут быть сформированы из полученного списка.
Объясните пожалуйста, как это осуществляется..?

Автор: 18192123 29.03.2009 16:16

С этим получилось разобраться.

Автор: 18192123 30.03.2009 0:38

Ещё один вопрос из серии "работа со списками"..

Код

parent(petr,ivan).
parent(petr,olga).
parent(lidia,ivan).
parent(ivan,sergey).
parent(maria,oleg).
parent(ivan,oleg).
parent(oleg,inna).
ancestor(A,B):-parent(A,B).
ancestor(A,B):-parent(C,B),ancestor(A,C).


хотелось бы разобраться с тем, как усовершенствовать рекурсивную процедуру ancestor, чтобы в результате получить список от предка до потомка..
Подскажите пожалуйста, как это реализовать?