如何在Prolog中获取块中的所有元素?在我的代码中,大小可以动态更改,因此块大小不同,4x4 = 4个元素,9x9 = 9个元素等等。块被切割成正方形,因此在4x4中,水平长度为round(sqrt(4))=2,垂直长度为round(sqrt(4))=2。在9x9中...sqrt(9)...因此块的高度和宽度为3。我需要一个有效的算法来获取元素。
我的数独列表是这样构建的:
L=[ [4,3,1,2], [2,1,4,3], [3,4,2,1], [1,2,3,4] ],
因此,这是一个列表,其中包含数独中每行的列表。检查行和列没有问题,使用all_different检查行,转置整个列表,使用转置列表检查all_different。
但是由于数独的动态大小,我无法编写适用于块的固定代码。有没有任何想法?我考虑了flatten(L)并使用偏移量来获取正确的块,但是这种方法似乎非常困难?
请帮助我!
我的数独列表是这样构建的:
L=[ [4,3,1,2], [2,1,4,3], [3,4,2,1], [1,2,3,4] ],
因此,这是一个列表,其中包含数独中每行的列表。检查行和列没有问题,使用all_different检查行,转置整个列表,使用转置列表检查all_different。
但是由于数独的动态大小,我无法编写适用于块的固定代码。有没有任何想法?我考虑了flatten(L)并使用偏移量来获取正确的块,但是这种方法似乎非常困难?
请帮助我!