用于在数独板上着色盒子的算法

时间:2012-04-17 14:53:42

标签: java algorithm multidimensional-array sudoku

我目前正在使用Swing / Awt在Java编写一个图形数独求解器程序。所以我决定用它们的方式(用3x3和2x3盒子)遮挡电路板上的方框(标有粗线):
http://zitowolf.net/sudoku/images/bd6x6.png http://zitowolf.net/sudoku/images/bd8x8.png
6x6板和8x8板

程序中的板基本上表示为int[dimension][dimension]阵列,程序接受尺寸为4x4的板 - > 16×16。

问题是要确保行或列中彼此相邻的框没有相同的阴影。 GUI着色过程本身不是问题,但是找出方形是否应该作为阴影框的一部分着色。

我已经尝试了几个小时来实现一个简单的算法来解决这个问题,通过一个带有双循环的数组,但我还没有得到任何合理的模式,而且我没有想法。到目前为止,我的算法基于这样的假设:每个其他框应该从左上到右下方着色。这不适用于6x6变体,因为您有序列:彩色框 - >白色框 - >白色框。

这里有人可以提出算法或其他方法吗?如果需要,我会提供更多信息。非常感谢。

1 个答案:

答案 0 :(得分:2)

bool should_shade(x,y,size_x,size_y) 
//sizes are size of small box and position x,y count from 0
{
     return ( (x/size_x + y/size_y ) % 2) == 0; //division is integer division

}