我目前正在使用 Swing/Awt 用 Java
编写图形数独求解器程序。所以我决定按照它们的方式对板上的框(用较粗的线标记)进行着色(使用 3x3 和 2x3 框):
(来源:zitowolf.net)
(来源:zitowolf.net)
6x6 板和 8x8 板
程序中的棋盘基本上表示为 int[dimension][dimension]
数组,并且程序接受尺寸从 4x4 -> 16x16 的棋盘。
问题是确保行或列中相邻的框没有相同的阴影。 GUI着色过程本身不是问题,而是找出一个正方形是否应该作为着色框的一部分进行着色。
我已经尝试了几个小时来实现一个简单的算法来解决这个问题,使用双 for 循环遍历数组,但我还没有得到任何合理的模式,而且我没有想法。到目前为止,我的算法基于这样的假设:每个其他框都应该从左上角到右下角着色。这不适用于 6x6 变体,因为您的顺序是:彩色框->白色框->白色框。
这里有人可以建议一种算法或其他方法吗?如果需要,我会提供更多信息。非常感谢。
最佳答案
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
}
关于java - 数独板上的着色框算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10193611/