问题标签 [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.
javascript - 等级数独难度级别
我正在构建一个用 Javascript 编写的有趣的数独游戏。
一切正常,每次都使用一个解决方案完全生成电路板。
我唯一的问题是,这使我无法将我的项目公开发布的
原因是我不知道如何对我的电路板进行难度等级评分。我到处都看过,
在论坛上发帖等等。我不想自己编写算法,这不是这个项目的重点,
而且,它们对我来说太复杂了,因为我不是数学家。
我唯一接近的是这个通过 JS 进行评分的网站,
但问题是,代码是以如此糟糕的无证、非常临时的方式编写的,
因此不能借用......
我会说到点子上——
谁能指点我一个提供数独分级/评级源代码的地方?
谢谢
22.6.11 更新:
这是我的数独游戏,我已经实现了自己的评分系统,它依赖
于基本的人类逻辑解决技术,所以检查一下。
java - 数独检查子网格错误
嗨,谁能告诉我我在这里做错了什么?我想检查每个子网格是否有 9×9 正方形中的重复值。
我的方法首先通过为每个子网格创建一个一维数组来工作,然后可以检查每个子网格的每一行。为了让它去每个子网格,我自己提供它的坐标。它检查第一个网格 0,0 但不检查其他子网格的重复值。
谁能告诉我我做错了什么?
java - alogrithim 可能的值 java 数独
我哪里错了?这似乎不起作用。我试图在参数中指定一个 i 和 j 来定位单元格。并返回 9 x 9 数独网格中的可能值。如果单元格为空,则第一个数组即 a[0]= true,如果正在播放或占用,则为 false。数组的其余部分由值组成,这些值是可以插入到 i 和 j 单元格中的可能值。因此,可能的值为 4,然后它将返回 a[4]= true 并且布尔数组的其余部分是可能的。谁能告诉我哪里出错了?while循环不正确吗?
list - prolog 使用循环中的变量自动填充列表
如何用变量自动填充列表?
喜欢
所以结果就像 L=[X1,X2,X3,X4,X5,X6,X7,X8,X9]。?
这是因为我想为我的数独求解器建立一个适当大小的列表。
我在这里得到尺寸:
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) 并使用偏移量来获得正确的块,但这样做似乎很难吗?
请帮我!
java - 为什么这个数独回溯会卡住?
我正在写一个数独回溯求解器,它卡住了,我不明白为什么。我认为我的递归调用没问题。我错过了什么?
输入从 input.txt 文件中读取,网格初始布局在一行中:
输入.txt:
编辑:我的意思是“卡住”,因为没有完成对网格的求解
这是一个示例输出:
程序:
c++ - 数独求解器多种解决方案
下面我有一个 9x9 Sudoku Solver 的大纲,但我不确定如何将多个解决方案与部分条目合并到某个 Sudoku 中,如果还没有的话。有人可以帮我解决这个问题吗?
该算法使用回溯(因此,使用堆栈)
java - 数独 - 区域测试
我正在创建一个数独生成器,使用“蛮力”随机方法。我已经能够使用以下代码检查 x / y 轴是否有重复数字:
我决定实施“盒子”或“区域”检查(从原点开始检查每个 3x3 方格),但我似乎无法完全理解代码。这是我到目前为止所做的。我只是不太清楚我的逻辑错误在哪里(作为记录,程序将使用此代码运行,但不会正确检查区域)
regionCheck.java 的内容:
一路走来,我只是迷路了,不了解如何“选择”一个区域并遍历区域。
完整来源:http: //ideone.com/FYLwm
任何关于如何“选择”一个区域进行测试然后迭代它的帮助将不胜感激,因为我真的没有想法。
javascript - 需要回溯算法生成数独板的帮助
我已经编写了一个生成数独板的算法,但它失败了。我已经基于此编写了它,尽管它确实有所不同,因为在我偶然发现它之前我已经编写了很多代码。
编码
我设置了一个多维数组来保存名为matrix
. matrix
由 9 个数组组成,这些数组是行,每个数组包含 9 列。所以要获得第 4 行第 7 列的值,我会使用
求解所有正方形的函数:
这generatePossibleNumbersArray()
只是一个用于创建多维数组的辅助函数,matrix
除了它被初始化为每个单元格保存一个整数 1-9 的数组。在populateMatrix()
函数期间,这些可能的数字会为每个单元格减少。
问题
它在每次完成矩阵之前都会失败,因为j
最终是-1
. 这是因为随着越来越多的单元格得到解决,算法会更难找到单元格的值,因此它会回溯。但它最终最终会一直回溯到j == -1
.
我真的认为这个算法会起作用,我花了一整天的时间试图解决这个问题,但我很困惑,所以任何人都可以对此有所了解,将不胜感激。
我想'我知道,我会写一个 javascript 函数来解决数独问题。它能有多难?'。我错了。
[解决方案]
基于@Steve314 的评论(他现在已被删除!)我添加matrix[i][j] = undefined
到算法中if(!found) { ...
,算法现在可以工作并且正在快速减轻。
如果有人感兴趣,这里是完整的代码。
algorithm - 如何用独特的解决方案生成数独板
您如何生成具有独特解决方案的数独板?我的想法是初始化一个随机板,然后删除一些数字。但我的问题是如何保持解决方案的唯一性?