Я разрабатываю программу PROLOG с ограничениями для поиска решений для определенной игры.Manipulate labeling/2 output PROLOG
Вопрос №1: Для целей отладки я хочу подсчитать количество возможных решений игры. Есть ли способ сделать это с помощью предиката labeling/2
?
Моя цель состоит в том, чтобы подсчитать количество возможных комбинаций между кубиками (Instant Insanity):
insanity2(Vars) :-
Vars = [F1,B1,R1,L1,U1,D1,
F2,B2,R2,L2,U2,D2,
F3,B3,R3,L3,U3,D3,
F4,B4,R4,L4,U4,D4],
/* Colors range (4 colors) */
domain(Vars, 1,4),
/* Restrictions */
%Color restrictions
% Cube #1
alocCubeColors(F1,B1,R1,L1,U1,D1),
% Cube #2
alocCubeColors(F2,B2,R2,L2,U2,D2),
% Cube #3
alocCubeColors(F3,B3,R3,L3,U3,D3),
% Cube #4
alocCubeColors(F4,B4,R4,L4,U4,D4),
%Logic restrictions
F1#\=F2, F1#\=F3, F1#\=F4, F2#\=F3, F2#\=F4, F3#\=F4,
B1#\=B2, B1#\=B3, B1#\=B4, B2#\=B3, B2#\=B4, B3#\=B4,
R1#\=R2, R1#\=R3, R1#\=R4, R2#\=R3, R2#\=R4, R3#\=R4,
L1#\=L2, L1#\=L3, L1#\=L4, L2#\=L3, L2#\=L4, L3#\=L4,
labeling([], Vars).
Вопрос # 2: Можно ли управлять labeling/2
выход, чтобы rearranje его в надлежащим образом?
Очень хороший (+1)! Если вы хотите только * номер * решений и хотите сохранить некоторую память, вы можете использовать, например: 'findall (' ** t ** ', labeling ([], Vs), Ts)' – mat