我想通过满足以下条件来填充数组中的 9 x 9 网格
- 不应在同一列中重复特定数字。
- 特定数字不应在同一行中重复。
当我执行下面提到的代码时,它会在没有上述条件的情况下用随机值填充所有 9 X 9 网格。如何在将值插入我的 9 X 9 网格之前添加这两个条件。
var sudoku_array = ['1','2','3','4','6','5','7','8','9'];
$('.smallbox input').each(function(index) {
$(this).val(sudoku_array[Math.floor(Math.random()*sudoku_array.length)]);
});
最佳答案
生成和解决数独实际上并不像其他(错误)答案所暗示的那么简单,但它也不是火箭科学。我不想从维基百科复制和粘贴,而是指向您 this question .
但是,由于仅指向外部链接是不好的做法,我想通过至少让您直觉地了解为什么天真的方法会失败来证明这一点。
如果您通过用随机数填充某些字段(从而考虑您的约束)来开始生成数独板,您将获得一个部分填充的板。完成它就等同于解决一个数独,这只不过是通过遵守数独规则来完成部分填满的棋盘。如果您曾经尝试过,您就会知道,如果您通过仅针对 3x3 框、列和行选择有效数字来决定下一个数字,这是不可能的。对于除最简单的数独之外的所有数独,都会有一些试验和错误,因此您需要一种回溯形式。
希望对您有所帮助。
关于javascript - 在 Javascript/jquery 中为数独游戏生成一个随机数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32984931/