javascript - 在 Javascript/jquery 中为数独游戏生成一个随机数组

标签 javascript jquery arrays random

我想通过满足以下条件来填充数组中的 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)]);

});

My JSFIDDLE LINK

最佳答案

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

但是,由于仅指向外部链接是不好的做法,我想通过至少让您直觉地了解为什么天真的方法会失败来证明这一点。

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

希望对您有所帮助。

关于javascript - 在 Javascript/jquery 中为数独游戏生成一个随机数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32984931/

相关文章:

PHP:可以从对数组元素的引用中确定父数组的名称和键吗?

arrays - 找到缺失的元素

javascript - 我的 map 框标记未显示

jquery - 为双色范围设置 jQuery UI 样式

jQuery.on() - 如何在元素加载后立即初始化

javascript - 如何以编程方式在元素上触发 "hoverintent"

c++ - 在 Debug模式下释放静态数组时出错

javascript - 使用 PDFBox 将计算脚本添加到 pdf 表单字段

javascript - 将 jsonobject 插入新数组

javascript - 如何在单击按钮时启用/禁用文本框