问题标签 [sudoku]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2104 浏览

algorithm - 回溯数独求解器不起作用

假设一个二维数组包含一个 9x9 数独网格,我的求解函数在哪里崩溃?我正在尝试使用简单的回溯方法来解决这个问题。谢谢!

即使改变了isSolved问题,我的解决方案似乎也陷入了无限循环。看起来我错过了一些基本案例步骤,但我不确定在哪里或为什么。我已经查看了类似的解决方案,但仍然无法确定问题所在。我只是想创建基本的求解器,不需要提高效率。谢谢您的帮助!

0 投票
3 回答
849 浏览

algorithm - 创建数独谜题时的重复问题

我正在尝试创建自己的普通 9x9数独游戏

我将问题分为两部分-

  1. 创建一个完全填充的数独,和
  2. 从网格中删除不必要的数字

现在,我坚持第一部分。


这是我简要使用的算法:

a)首先我选择一个数字(比如1),生成一个随机单元格位置,如果

  • 该单元尚未被占用,并且
  • 如果该行还没有编号,并且
  • 如果该列还没有编号,并且
  • 如果 3x3 框还没有编号

b) 现在我检查一种情况,即在一行、一列或一个框中,只有一个地方是空的,然后我填写

c)我检查是否有一个数字不存在于一个框中,但存在于同一行和同一列的框中(我在这里谈论的是 3x3 框),数字的位置是固定的,我填写它.

d) 我重复上述步骤,直到每个数字在网格上出现九次。


我面临的问题是,我经常遇到这样的中间情况:

看到写有 [4/2] 的地方了吗?由于标有 [] 的框,那是 2 和 4 的位置。

我能做些什么来避免陷入这种情况(因为这种情况是一个僵局 - 我无法继续前进)

0 投票
11 回答
144102 浏览

python - 求解数独的算法

我想在 python 中编写代码来解决数独难题。你们对为此目的的好算法有什么想法吗?我在网上的某个地方读到了一种算法,它通过用所有可能的数字填充整个盒子来解决它,然后将已知值插入到相应的盒子中。从已知值的行和列中删除已知值。如果你们知道更好算法比这个请帮我写一个。我也很困惑我应该如何从用户那里读取已知值。通过控制台逐一输入值真的很难。除了使用gui之外,还有什么简单的方法吗?

0 投票
4 回答
703 浏览

lisp - 数独表生成器故障,lisp

我的 lisp 代码的某些部分有问题。它是一个数独表生成器。在这部分之前它工作正常:

基本上,我在第 x 行和第 y 列上,我需要插入一个元素。我观察这个元素和列的子矩阵,然后选择上面任何一个中没有出现的数字并将其放在那里。这就是“pick”变量。问题是有时“选择”变量会获得 NIL 值,尽管在条目循环中它具有正确的值。当它获得 NIL 时,选择值与上一个循环中的值保持不变(我在此代码段上方的列和行中循环),使我的最终表的输出无效(例如,一行中的双值)。如何跟踪选择变量的变化?我只在这个片段中使用它,我不明白为什么它突然变成零。

例如,我通常有:

  • 在条目循环中:选择 (5)
  • 条目外循环:选择 (5)
  • 在条目循环中:选择 (6 7)
  • 退出条目循环:选择(6 7),然后是这个:
  • 在条目循环中:选择无。

谢谢你。

0 投票
2 回答
2076 浏览

language-agnostic - 拉丁方阵生成器?(类数独约束问题)

目的

我们正在为需要遵循以下约束的实验设计设计一个拉丁方格(类似数独的序列):

  • 值不能连续重复
  • 值不能在列中重复
  • 任何两行中的值不能成对重复

前 3 个约束的示例:

在这里,我们选择了素数,但值是任意的(只要有 6 个不同的值)。请注意,它与 6 x 6 网格中的数独相同,但额外的约束是行间没有重复的对(又名二元组)。也就是说,2 3只出现在第一行,而没有出现在其他行中,以此类推。

  • 值应与符合这些约束的另外 6 个值配对:
    • 第二组值不能连续重复
    • 第二组值不能在列中重复
    • 与第 1 组数值配对时,第 2 组数值不能重复。

也就是说,我们需要另外六个与前六个配对的值(同样是任意的——它们可以是“a、b、c、d、e、f”)。最后一个约束意味着如果你在任何地方2使用 ( , a) ,你就不能再次使用它。

最后的第二组约束是问题所在。对于 n = 6 的 nxn 网格没有解决方案。这就是工作中的活动扳手。我们希望尽量减少重复次数,以制作一对“有点像”的正交拉丁方格。

问题

你以前遇到过这个问题吗?(如果有一种工具可以生成解决方案,那就太好了。)我们只需要一个这样的例子就可以了。我们已经尝试了几种不同的构建策略。

我们正在考虑为其编写求解器的想法,但如果某些东西已经存在,我们希望避免这样做。

0 投票
4 回答
4513 浏览

python - 用 Python 编写数独求解器

这是我用python语言编写的数独求解器,当我运行这个程序时,更新函数和求解函数似乎有问题。

无论我查看多少时间并移动代码,我似乎都没有运气

谁能帮我?



这里有一些谜题:

谜题 1

谜题 2

谜题 3


0 投票
3 回答
365 浏览

language-agnostic - 你会使用什么样的学习算法来建立一个模型,说明人类需要多长时间才能解决给定的数独问题?

我在机器学习、模式识别、数据挖掘等以及它们的基础理论和系统方面没有太多经验。

我想开发一个人工模型,模拟人类在给定的数独游戏中移动所需的时间。

因此,作为机器学习过程的输出,我正在寻找一个模型,该模型可以预测目标人类在给定的数独情况下采取行动所需的时间。

相同的输入并不总是映射到相同的结果。人类在相同情况下采取行动需要不同的时间,但我的假设是由此产生的概率分布存在趋势。(我有根据的猜测是这很正常。)

我对影响分布的因素(如#empty slot)有一些想法,但最好让系统来找出这些模式。请注意,我对模式不感兴趣,只对模型感兴趣。

我可以通过运行数独游戏并测量移动所需的时间来轻松生成样本和测试数据。

您建议为此使用哪种学习算法?

我在考虑神经网络,但我不确定它们是否具有为相同输入提供加权随机结果的理想属性。

0 投票
7 回答
27577 浏览

java - 如何修复此堆栈溢出错误?

所以我有我认为在java中用于数独求解器的非常好的代码,但我需要这个方法的一些帮助。当我将它嵌入到 main 方法中时,它给了我一个堆栈溢出。问题是我的方法不知道如何扭转和纠正错误。我需要一个布尔标志(一个与下面代码中使用的标志不同,实际上工作得更好的标志)或让它知道何时应该返回以及何时可以再次前进并继续解决游戏的东西。谢谢你提供的所有帮助

0 投票
3 回答
5826 浏览

c++ - 随机数独生成

我正在编写一个应该为模拟项目生成随机数独谜题的函数;此函数以要生成的单元格数量为参数,然后生成单元格的索引和要放入这些单元格的数字。我在生成单元格索引时遇到问题,我不是编程专家,我找不到一个好的例程来生成索引并检查两次或更多次不是相同的索引对。功能是:

ij[]我为函数在数组中放置随机索引的部分寻求帮助,我使用了 a 但它不是一个好的解决方案,如果大于 17 左右goto它就不能很好地工作。只返回一个 1 到 9 之间的随机数。quanti
casuale()

0 投票
3 回答
1233 浏览

c - 关于数独求解

有人可以帮我理解这个解决方案吗: