java - 数独板上的着色框算法

标签 java algorithm multidimensional-array sudoku

我目前正在使用 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/

相关文章:

java - 优化Java代码中的几个RegEx

确定对象邻居的算法

algorithm - 求解多源多汇流网络的最优方法

c# - Array.Copy 总是行优先?

c - 二维数组的操作: add rows and columns

java - 如何在 Guava 中迭代

java - IllegalArgumentException : 'dataSource' or 'jdbcTemplate' is required when extending JdbcUserDetailsManager

java - org.hibernate.HibernateException : Unable to instantiate default tuplizer [org. hibernate.tuple.entity.PojoEntityTuplizer]

c# - XNA-寻找算法

c - C 中字符和字符串函数的二维数组