Recursion 获得数独的所有解决方案

Recursion 获得数独的所有解决方案,recursion,prolog,sudoku,swi-prolog,Recursion,Prolog,Sudoku,Swi Prolog,我想写一段代码,找到NxN数独的所有解(其中N是一个平方数:1,4,9,16,…)。 作为输入,我有一个NxN矩阵(列表列表)。它的每个元素都是一个列表,要么包含一个数字,要么为空。例如,它可以是: [[[],[],[1],[]], [[],[],[],[2]], [[],[],[],[]], [[2],[],[],[]]] 我现在要写的函数是返回给定输入的所有可能解。 我怎样才能得到所有可能的解决方案? 我所做的是建立一个[1,2,3,…N]列表,从中生成所有可能的组合,然后选择对给定输入为

我想写一段代码,找到NxN数独的所有解(其中N是一个平方数:1,4,9,16,…)。 作为输入,我有一个NxN矩阵(列表列表)。它的每个元素都是一个列表,要么包含一个数字,要么为空。例如,它可以是:

[[[],[],[1],[]],
[[],[],[],[2]],
[[],[],[],[]],
[[2],[],[],[]]]
我现在要写的函数是返回给定输入的所有可能解。 我怎样才能得到所有可能的解决方案? 我所做的是建立一个[1,2,3,…N]列表,从中生成所有可能的组合,然后选择对给定输入为真的组合,并返回这些组合。对于N=4,它如下所示:

[[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]],
[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]],
[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]],
[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]]
问题是使用了大量的内存和空间,我也无法编写这个递归。我认为应该有一种更合理、更容易找到解决办法的方法


因此,我的问题是:如何获得所有可能的解决方案?

您可以使用CLP(FP)库并用它解决问题。网络上有大量的例子。我不得不不用clpfd、clpq、clpr、CLPB。你能发一些你写的代码吗?对我来说,你想要什么还不清楚。你能用a)你的代码更新你的问题吗?b)用一种解决方案和c)用多种解决方案更新你的问题吗。