permutation([], []).
permutation(L, [X|Xs]) :- select(X, L, Rest), permutation(Rest, Xs).
Если я наберу permutation([1,2,3],R)
, первое решение будет "[1,2,3]", но как перейти ко второму без использования ";" или «неудача». Мне нужно использовать второе решение, например «[1,3,2]» или около того, чтобы сравнить его с другим списком.
Я имею в виду:
permutation([], []).
permutation(L, [X|Xs]) :- select(X, L, Rest), permutation(Rest, Xs).
go_perm(L,P) :-
L = P,
write(P),nl.
go_perm(L,P) :-
permutation(P,P2), % in this case i wanna get the next solution -.-
go_perm(L,P2).
Если L = P
, то он заканчивается. Перестановка первого решения для «[1,2,3]» — это «[1,2,3]». Но это втягивает меня в stackoverflow, потому что это приводит к бесконечным вещам. Возможно, вы меня понимаете. Спасибо!