如何使用clpfd库设置12 x 12矩阵

时间:2016-04-03 11:00:45

标签: matrix prolog clpfd

我是约束逻辑编程的新手,想知道如何使用clpfd在prolog中设置12 x 12矩阵。我正在使用swi prolog ide。

1 个答案:

答案 0 :(得分:2)

要分配变量矩阵,我们可以在普通的Prolog中做到:

matrix(N,Rows) :- bagof(R,Y^(between(1,N,Y),length(R,N)),Rows).

然后,使用库(yall)约束每个'单元'从域中取值(比如1..3):

:- use_module(library(clpfd)).
?- matrix(12, Mat), maplist([R]>>(R ins 1..3), Mat).

或者,内置了:

?- matrix(12, Mat), bagof(t, R^(member(R, Mat), R ins 1..3), _).