在 Javascript/jquery 中为数独谜题生成一个随机数组

Har*_*dia 4 javascript arrays random jquery

我想通过处理以下条件来填充数组中的 9 x 9 网格

  1. 不应在同一列中重复特定数字。
  2. 特定数字不应在同一行中重复。

当我执行下面提到的代码时,它会在没有上述条件的情况下用随机值填充所有 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)]);

});
Run Code Online (Sandbox Code Playgroud)

我的 JSFIDDLE 链接

lex*_*x82 5

生成和解决数独实际上并不像其他(错误的)答案所暗示的那么简单,但它也不是火箭科学。我想向您指出这个问题,而不是从 Wikipedia 复制和粘贴。

然而,由于仅指向外部链接是不好的做法,我想通过至少为您提供为什么天真的方法失败的直觉来证明它的合理性。

如果您通过用随机数填充一些字段来开始生成数独板(从而考虑到您的约束),您将获得一个部分填充的板。完成它就相当于解决了一个数独,这只不过是通过遵守数独规则来完成一个部分填充的棋盘。如果您曾经尝试过,您就会知道如果您通过仅针对 3x3 框、列和行选择一个有效数字来决定下一个数字,这是不可能的。除了最简单的数独之外,所有的数独都需要反复试验,因此您需要一种回溯的形式。

我希望这有帮助。