Предполагая, что вы хотите перебрать решения для их печати
Один из стандартных способов добиться этого - отказ и возврат, как в:
print_all_permutations(X)
:- permutation(X, Y), print(Y), nl, fail ; true.
Предполагая, что вы просто хотите проверитьесли данное решение верное
Вы уже сделали.Просто вызовите функцию со списком ссылок и списком, который вы хотите протестировать:
permutation([1, 2, 3], [2, 1, 3]).
вернет true, потому что [2, 1, 3] равно перестановке [1,2, 3].Если второй аргумент не является перестановкой, цель оценивается как ложная.
Это магия пролога: найти решение или проверить, является ли данное решение правильным, - это одно и то же.
Между: частичное решение
По-прежнему применимы те же рассуждения:
permutation([1, 2, 3], [2, X, 3]).
покажет единственно возможное значение для X.
Или, если вы хотитевесь список будет результатом:
X = [2, X, 3], permutation([1, 2, 3], X).