我正在尝试将整数列表转换为CLPFD域。例如[1,5,7] -> 1\/5\/7.我试着看了文件,但什么也找不到。我发现的唯一东西是fd_dom/2. dom文档。在这里,他们正在将一个域转换成一个整数列表(与我想要的相反)。我是CLPFD和prolog的新手。所以,如果有人除了回答我的问题之外还能解释fd_dom文档,我会非常感激的。
发布于 2022-04-06 09:16:21
下面是将整数列表转换为域(析取)的内容:
list_domain_disjunction([D|Ds],Disj) :-
foldl(disj,Ds,D,Disj).
disj(A,B,C) :- C = \/(B,A).示例:
?- list_domain_disjunction([1,5,7],X).
X = 1\/5\/7.人们可以看到这种分离是如何使用write_canonical/1“真正”表示的。
?- write_canonical(1\/5\/7).
\/(\/(1,5),7)注意:list_domain_disjunction/2是不可逆的,也就是说,它不能用于将一个disjuction转换为一个整数列表。
https://stackoverflow.com/questions/71760211
复制相似问题