近日,整理了下数独的资料,特来分享
把数独分成9个小九宫格后
第一步,填好中心的小九宫格
接着行列变换填第4、第6个小九宫格
再行列变换填第2、第8个小九宫格
然后以第2个小九宫格为中心,行列变换填第1、第3个小九宫格
最后以第8个小九宫格为中心,行列变换填第7、第9个小九宫格
自此,数独终盘生成完毕
那为了更加随机一点。
可以任意交换 属于同一个九宫格 两整行或者两整列的数据。
那么终盘有了,初盘呢
实行随机挖洞,挖N个洞后,每挖一个洞,通过【唯一解算法】验证是否唯一解。
最后是根据唯一解递归函数次数 (哈哈,一般是用递归吧。),进行简单的难度评级。
难度不合格则重新生成。
为了更加直观,终盘生成步骤全部做成了图片
【唯一解算法 简单思路】
1.空数字的格子,根据同行 同列 同小九宫格 生成 备选数字数组。
2.备选数字 只为1个的格子,直接填入,同行 同列 同小九宫格的 其他格子备选数字数组中 ,有这个数字的,从备选数字数组 删除这个数字。
3.选一个备选数字最少的格子,任意填入1个备选数字。
4.重复2,3步骤,到【成功填完整】 ,就累计1种解。
5.累计只有1种解,则是唯一解。