问题标签 [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 投票
6 回答
5763 浏览

javascript - 等级数独难度级别

我正在构建一个用 Javascript 编写的有趣的数独游戏。
一切正常,每次都使用一个解决方案完全生成电路板。

我唯一的问题是,这使我无法将我的项目公开发布的
原因是我不知道如何对我的电路板进行难度等级评分。我到处都看过,
在论坛上发帖等等。我不想自己编写算法,这不是这个项目的重点,
而且,它们对我来说太复杂了,因为我不是数学家。

我唯一接近的是这个通过 JS 进行评分的网站,
但问题是,代码是以如此糟糕的无证、非常临时的方式编写的,
因此不能借用......

我会说到点子上——
谁能指点我一个提供数独分级/评级源代码的地方?

谢谢

22.6.11 更新:
这是我的数独游戏,我已经实现了自己的评分系统,它依赖
于基本的人类逻辑解决技术,所以检查一下。

0 投票
1 回答
1228 浏览

java - 数独检查子网格错误

嗨,谁能告诉我我在这里做错了什么?我想检查每个子网格是否有 9×9 正方形中的重复值。

我的方法首先通过为每个子网格创建一个一维数组来工作,然后可以检查每个子网格的每一行。为了让它去每个子网格,我自己提供它的坐标。它检查第一个网格 0,0 但不检查其他子网格的重复值。

谁能告诉我我做错了什么?

0 投票
1 回答
861 浏览

java - alogrithim 可能的值 java 数独

我哪里错了?这似乎不起作用。我试图在参数中指定一个 i 和 j 来定位单元格。并返回 9 x 9 数独网格中的可能值。如果单元格为空,则第一个数组即 a[0]= true,如果正在播放或占用,则为 false。数组的其余部分由值组成,这些值是可以插入到 i 和 j 单元格中的可能值。因此,可能的值为 4,然后它将返回 a[4]= true 并且布尔数组的其余部分是可能的。谁能告诉我哪里出错了?while循环不正确吗?

0 投票
1 回答
2228 浏览

list - prolog 使用循环中的变量自动填充列表

如何用变量自动填充列表?

喜欢

所以结果就像 L=[X1,X2,X3,X4,X5,X6,X7,X8,X9]。?

这是因为我想为我的数独求解器建立一个适当大小的列表。

我在这里得到尺寸:

0 投票
2 回答
1751 浏览

algorithm - prolog数独块算法?

如何在prolog中获取块的所有元素?大小可以在我的代码中动态改变,因此块大小不同,4x4 = 4 个元素,9x9= 9 个元素等。块被切成正方形,所以在 4x4 中,水平长度是圆形(sqrt(4))= 2 和垂直块的长度是圆形(sqrt(4))= 2。和9x9 ... sqrt(9)..所以块的高度和宽度是3。我需要一种算法来提高元素的效率。

我的数独列表是这样建立的:

L=[ [4,3,1,2], [2,1,4,3], [3,4,2,1], [1,2,3,4] ],

所以一个列表,其中包含数独中的行列表。检查行和列是没有问题的,-> all_diff 用行检查,转置整个List,all_different 用转置后的列表检查。

但由于数独的动态大小,我无法为这些块编写修复代码。所以有人知道吗?我考虑过 flatten(L) 并使用偏移量来获得正确的块,但这样做似乎很难吗?

请帮我!

0 投票
4 回答
1418 浏览

java - 为什么这个数独回溯会卡住?

我正在写一个数独回溯求解器,它卡住了,我不明白为什么。我认为我的递归调用没问题。我错过了什么?

输入从 input.txt 文件中读取,网格初始布局在一行中:

输入.txt:

编辑:我的意思是“卡住”,因为没有完成对网格的求解

这是一个示例输出:

程序:

0 投票
2 回答
3585 浏览

c++ - 数独求解器多种解决方案

下面我有一个 9x9 Sudoku Solver 的大纲,但我不确定如何将多个解决方案与部分条目合并到某个 Sudoku 中,如果还没有的话。有人可以帮我解决这个问题吗?

该算法使用回溯(因此,使用堆栈)


0 投票
2 回答
3727 浏览

java - 数独 - 区域测试

我正在创建一个数独生成器,使用“蛮力”随机方法。我已经能够使用以下代码检查 x / y 轴是否有重复数字:

我决定实施“盒子”或“区域”检查(从原点开始检查每个 3x3 方格),但我似乎无法完全理解代码。这是我到目前为止所做的。我只是不太清楚我的逻辑错误在哪里(作为记录,程序将使用此代码运行,但不会正确检查区域)

regionCheck.java 的内容:

一路走来,我只是迷路了,不了解如何“选择”一个区域并遍历区域。

完整来源:http: //ideone.com/FYLwm

任何关于如何“选择”一个区域进行测试然后迭代它的帮助将不胜感激,因为我真的没有想法。

0 投票
1 回答
2144 浏览

javascript - 需要回溯算法生成数独板的帮助

我已经编写了一个生成数独板的算法,但它失败了。我已经基于编写了它,尽管它确实有所不同,因为在我偶然发现它之前我已经编写了很多代码。

编码

我设置了一个多维数组来保存名为matrix. matrix由 9 个数组组成,这些数组是行,每个数组包含 9 列。所以要获得第 4 行第 7 列的值,我会使用

求解所有正方形的函数:

generatePossibleNumbersArray()只是一个用于创建多维数组的辅助函数,matrix除了它被初始化为每个单元格保存一个整数 1-9 的数组。在populateMatrix()函数期间,这些可能的数字会为每个单元格减少。

问题

它在每次完成矩阵之前都会失败,因为j最终是-1. 这是因为随着越来越多的单元格得到解决,算法会更难找到单元格的值,因此它会回溯。但它最终最终会一直回溯到j == -1.

我真的认为这个算法会起作用,我花了一整天的时间试图解决这个问题,但我很困惑,所以任何人都可以对此有所了解,将不胜感激。

我想'我知道,我会写一个 javascript 函数来解决数独问题。它能有多难?'。我错了。


[解决方案]

基于@Steve314 的评论(他现在已被删除!)我添加matrix[i][j] = undefined到算法中if(!found) { ...,算法现在可以工作并且正在快速减轻。

如果有人感兴趣,这里是完整的代码

0 投票
14 回答
103717 浏览

algorithm - 如何用独特的解决方案生成数独板

您如何生成具有独特解决方案的数独板?我的想法是初始化一个随机板,然后删除一些数字。但我的问题是如何保持解决方案的唯一性?