图形数独序言

Graph Sudoku Prolog

我有一个关于 CLP 和 CT 的作业。我看了很多块数独的例子。我学会了如何定义行、列和框的列表。但是,据我了解,我的问题不同于经典的块数独示例。

我们有一个图 G=(V,E) 没有相邻顶点具有相同的编号。

gsudoku(边,N),标签(V)。

输出:

?- gsudoku([e(X,Y),e(Y,Z),e(Z,X)],2),label([X,Y,Z]).
false
?- gsudoku([e(X,Y),e(Y,Z),e(Z,X)],3),label([X,Y,Z]).
X=1 Y=2 Z=3 and (other permutations)

因为我有 3 分,所以我应该将其视为 3x3 数独示例吗?

有人能帮我解决一下吗?提前致谢!

对于未来的读者这里是代码:

:- use_module(library(clpfd)).
gsudoku([],_).
gsudoku([e(F,T)|XS],N):- F in 1.. N,
 T in 1.. N ,
 F #\= T ,
 gsudoku(XS,N).