Задание 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