我不知道如何实现以下目标:
我想计算满足某个条件(其值未知)的次数。
例如,如果我有列表[A1,A2,A3]
和[B1,B2,B3]
,我该怎么办?
创建一个列表[R1,R2,R3]
,其中Ri
1
Ai=Bi
,0
,:- use_module(library(clpfd)).
main(A,B) :-
length(A,3),
domain(A,1,3),
all_different(A),
length(B,3),
domain(B,1,3),
all_different(B),
append(A,B,L),
labeling([],L).
。{/ p>
这是“程序”的基础。
{{1}}
答案 0 :(得分:1)
你应该'了解'你的条件,发布表格的约束
reify(A,B,C): - C#< ==> A#= B。
变量对之间的。 maplist / 3这是一个方便的快捷方式
:- use_module(library(clpfd)).
% simulate domain/3 in SWI-prolog
domain(Vs,L,H) :- Vs ins L..H.
reify(A,B,C) :-
C #<==> A #= B.
main(A,B,C) :-
length(A,3),
domain(A,1,3),
all_different(A),
length(B,3),
domain(B,1,3),
all_different(B),
maplist(reify, A,B,C),
labeling([],A),
labeling([],B).
产量
1 ?- main(A,B,C).
A = B, B = [1, 2, 3],
C = [1, 1, 1] ;
A = [1, 2, 3],
B = [1, 3, 2],
C = [1, 0, 0] ;
A = [1, 2, 3],
B = [2, 1, 3],
C = [0, 0, 1]
etc ....