Скачиваний:
37
Добавлен:
01.05.2014
Размер:
282.11 Кб
Скачать

Задание 3.9

Определите отношение, подмножество( Множество, Подмножество), где Множество и Подмножество - два списка представляющие два множества. Желательно иметь возможность использовать это отношение не только для проверки включения одного множества в другое, но и для порождения всех возможных подмножеств заданного множества.

DOMAINS

список=symbol*

PREDICATES

%подмножество(список_который_ищут, список_в_котором_ищут)

nondeterm подмножество( список, список)

CLAUSES

%проверка того, является ли Что подсписком Где

подмножество(Что, Где) :- конк(_, Доп, Где), конк( Что,_,Доп).

GOAL

%цель

подмножество(List,[a,b,c]).

%результат выполнения

List=[]

List=["a"]

List=["a","b"]

List=["a","b","c"]

List=[]

List=["b"]

List=["b","c"]

List=[]

List=["c"]

List=[]

%цель

подмножество([a,b],[a,s,a,a,b]).

%результат выполнения

yes

Задание 3.10

Определите отношение: разбиениесписка( Список, Список1, Список2), так, чтобы оно распределяло элементы списка между двумя списками Список1 и Список2 и чтобы эти списки были примерно одинаковой длины.

DOMAINS

список=symbol*

PREDICATES

%разбиениесписка(Разбиваемый_список, Полученный_список1, Полученный_список1)

разбиениесписка(список, список, список)

CLAUSES

%Разбиение списка на два "равномерных" списка - Задание 3.10

разбиениесписка([],[],[]).

разбиениесписка([X],[X],[]).

разбиениесписка([X,Y|Список1], [X|Список2], [Y|Список3]):-

разбиениесписка(Список1, Список2, Список3).

GOAL

разбиениесписка([a,b,c,d,e,f,g], Список1, Список2).

%результат выполнения

Список1=["a","c","e","g"], Список2=["b","d","f"]

1 Solution