1
domains
el=integer
list = el*
lista = list*
predicates
aux(list,integer,list)
arrangements(list,integer,lista)
clauses
aux([H|_],1,[H]).
aux([_|L],N,L1):-
aux(L,N,L1).
aux([H|L],N,[H|L1]):-
N<>1,
N1=N-1,
aux(L,N1,L1).
arrangements(L,N,R):-
findall(X,aux(L,N,X),R).
Этот код показывает все комбинации элементов списка. Как мне изменить его, чтобы показать договоренности. У меня нет никаких идейУстройства элементов списка в прологе
механизмы
[2,3,4] K=2 => [[2,3], [3,2], [2,4], [4,2], [3,4], [4,3]]
комбинаций
[2,3,4] K=2 => [[3,4], [2,3], [2,4]]
Вы говорите, что это «показывает все комбинации элементов», но хочет «показать договоренности». Можете ли вы пояснить пример? – lurker
Я привел пример в вопросе – user3043278
Ах, вы хотите перестановки из 3 вещей, взятых по 2 за раз. :) Если вы выполняете поиск в google в «прологовом перестановке», вы найдете кучу хорошей информации. Это можно сделать очень легко, используя предикат 'select/3'. – lurker