Есть ли способ показать все решения и/или найти, сколько их имеется в прологе SICSTus? Например, приведенный ниже код может быть использован для решения проблемы окраски карты.SICStus Prolog: Найти все решения
:- use_module(library(clpfd)).
solve_AUSTRALIA(WA,NT,Q,SA,NSW,V):-
domain([WA,NT,Q,SA,NSW,V], 1, 4),%colours represented by integers from 1 to 4
WA #\= NT,
WA #\= SA,
NT #\= SA,
NT #\= Q,
SA #\= Q,
SA #\= NSW,
SA #\= V,
Q #\= NSW,
NSW #\= V,
labeling([],[WA,NT,Q,SA,NSW,V]).
На данный момент я печатаю ;
каждый раз, чтобы увидеть дальнейшие решения по Пролог говорит нет. Есть ли способ, которым я могу сказать, что пролог показывает все решения сразу или лучше, способ, которым я могу найти, сколько там. Как и пролог, мне говорят, что есть пять решений проблемы.
Вы можете попытаться использовать 'findall/3',' findall/4', 'bagof/3' или' setof/3'. Они подобны. Например, то, что вы хотите сделать, это предикат вашего решения в 'findall (+ Templagte,: Solution, -Bag)' и исходный набор данных как 'Template', а коллективное решение -' -Bag'. –
Общий совет для clpfd в SICStus: произнесите 'assert (clpfd: full_answer)' на верхнем уровне, чтобы получить полный ответ, включая все связанные ограничения! – false