如何在prolog中获取块的所有元素?大小可以在我的代码中动态改变,因此块大小不同,4x4 = 4 个元素,9x9= 9 个元素等。块被切成正方形,所以在 4x4 中,水平长度是圆形(sqrt(4))= 2 和垂直块的长度是圆形(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_diff 用行检查,转置整个List,all_different 用转置后的列表检查。
但由于数独的动态大小,我无法为这些块编写修复代码。所以有人知道吗?我考虑过 flatten(L) 并使用偏移量来获得正确的块,但这样做似乎很难吗?
请帮我!