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

How to set up a 12 x 12 matrix using clpfd library

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

要分配变量矩阵,我们可以在普通 Prolog 中执行:

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

然后,使用 library(yall):

约束每个 'cell' 从域中获取值(比如 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), _).