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

python - for循环中的变量抽象失败

我正在尝试在 Python 中制作一个 4x4 数独求解器(我只是一个初学者!)并且在尝试定义一个函数来稍微清理我的代码时,我遇到了一些我不太了解的奇怪行为。显然,这之间是有区别的:

和这个:

奇怪的表达式用于检查行和列(框还没有完成)。如果已经问过这种问题,我非常抱歉浪费您的时间,但请尝试运行两个代码片段并观察您得到的不同结果。提前致谢。

(我有一种奇怪的感觉,我会被大喊大叫。哈。)

0 投票
3 回答
7185 浏览

c++ - 需要从输入文件中跳过换行符 (\n)

我正在将文件读入数组。它正在读取每个字符,问题在于它还读取了文本文件中的换行符。

这是一个数独板,这是我在字符中读取的代码:

就像我说的,它读取文件,显示在屏幕上,只是在遇到 \n 时顺序不正确

0 投票
2 回答
2631 浏览

c# - 将列表中的所有值相互比较

我有点卡在这里,无法进一步思考。

如何以最有效的方式将每个 CandidateDetail 项目与同一字典中的其他 CandidateDetail 项目进行比较?

示例:字典有三个键:5、6 和 1。因此我们有三个条目。现在这些关键条目中的每一个都有一个与之关联的列表。在这种情况下,假设这三个数字中的每一个在与每个键关联的列表中都有两个 CandidateDetails 项。这意味着换句话说,我们在不同或相同的单元格中有两个 5、两个 6 和两个 1。我想知道:

if[5].1stItem.CellId == [6].1stItem.CellId => 我们成功了。这意味着如果[5].2ndItem.CellId == [6].2ndItem.CellId => 完美,我们在同一个 Cell 中有一个 5 和一个 6。我们发现其他 5 和 6 一起在不同的牢房内。if[1].1stItem.CellId == ...

现在我需要检查 1 和其他 5 和 6 是否存在于前两个单元格中。

Linq 表达式可能有帮助吗?我被困在这里......我不知道......也许我采取了错误的方法。我正在尝试解决游戏数独的“隐藏对”。:)

http://www.sudokusolver.eu/ExplainSolveMethodD.aspx

非常感谢,凯夫

0 投票
4 回答
2859 浏览

java - 如何在Java中重用线程?

我正在构建一个主要目标是原始速度的控制台数独求解器。

我现在有一个 ManagerThread,它启动 WorkerThreads 来计算每个单元的 neibhbors。因此,现在为每个单元启动一个 WorkerThread。如何重用已完成工作的现有线程?

线程池模式似乎是解决方案,但我不明白如何防止线程在其工作完成后死亡。

ps:我不希望在这个特定任务中获得太多性能,只是想在将多线程应用到更复杂的代码部分之前试验一下它是如何工作的。

谢谢

0 投票
1 回答
2955 浏览

c# - 在数独中解决裸体三元组

我希望我能更多地关注大学的数学课。:)

如何为裸三元组实现这个数学公式?

裸体三人组
三元组 取三个单元格 C = {c1, c2, c3},它们共享一个单位 U。取三个数字 N = {n1, n2, n3}。如果 C 中的每个单元格都有候选 ci ⊆ N,那么我们可以从 U 中的其他单元格中删除所有 ni ∈ N。**

我有一个将单元(例如,框、行或列)作为参数的方法。该单元包含 9 个单元格,因此我需要从盒子中一次比较 3 个单元格的所有组合,也许将它们放入堆栈或集合中以进行进一步计算。

下一步将逐一采用这些 3 单元组合,并将它们的候选者与 3 个数字进行比较。同样,这 3 个数字可以是从 1 到 9 的任何可能组合。这就是我所需要的。

但我该怎么做呢?我会得到多少种组合?我是否得到 3 x 9 = 27 个单元格组合,然后得到相同的数字 (N)?

你将如何在经典的 C# 循环中解决这个问题?请不要使用 Lambda 表达式,我已经很困惑了 :)

代码: 为了在这里代表它们,我不得不缩短类。

候选人

盒子:

木板

非常感谢您的帮助,

0 投票
7 回答
7204 浏览

sudoku - 创建数独初始板

有没有一种算法或方法可以让我获得数独游戏的初始状态数独谜题。最好具有不同难度级别的能力?

0 投票
3 回答
2589 浏览

c - 蛮力数独求解器:回溯?

如果发现在其中放置任何数字 1-9 的单元格将是非法移动,则解决数独难题的蛮力算法的实现将失败。

实现是用 C 语言编写的,电路板由 9x9 数组表示。求解器从 9 开始倒计时,直到达到合法数字,如果无法达到,它会在其位置输出零。

零也表示要填充的单元格。如果输入一串零(空板),则为输出(截断):

最后三个零在那里,因为之前填写的值没有改变。我怎样才能阻止求解器像这样失败?

0 投票
1 回答
871 浏览

python - 将数独求解器从 C 移植到 Python 的问题

我最近用 C 写了一个数独求解器来练习编程。完成后,我决定用 Python 编写一个等效的程序,以便在语言之间进行比较并进行更多练习,这就是问题所在。似乎我在while循环之外声明的全局变量(sudokupossibilities [] [] [])在循环中不可用。我尝试添加用于调试的打印语句,似乎它在 while 循环之外设置正确(全为),但是一旦进入循环,值大多为零,有几个。我发现解决此问题的唯一方法是在“for k in range(9):”之后添加一条语句,将其设置为那里的一条语句 - 这会使以下语句过时并减慢程序速度。我已经包含了下面 Python 版本和之后的 C 版本的源代码。

C版:

我正在使用 Python 3.1 和 C99。我也很感激与我的代码质量有关的任何事情(尽管我知道我的程序缺少功能 - 我已将它们添加到 C 版本并计划在它工作后将它们添加到 Python 版本)。

谢谢。

编辑:下面的一个未解决的难题。

0 1 0 9 0 0 0 8 7
0 0 0 2 0 0 0 0 6
0 0 0 0 0 3 2 1 0
0 0 1 0 4 5 0 0 0
0 0 2 1 0 8 9 0 0
0 0 0 3 2 0 6 0 0
0 9 3 8 0 0 0 0 0
7 0 0 0 0 1 0 0 0
5 8 0 0 0 6 0 9 0

0 投票
2 回答
860 浏览

iphone - 数独网格的 UIKit 控件?

我最近用 C 语言完成了一个算法数独求解器,其中采用了三种不同的方法来解决这个难题。这是我为 Project Euler 解决方案编写的一段代码。挺好玩的,可以补充一下。。。

Anywho,所以我真的很想把这个小求解器放入 iPhone 应用程序中。我真的不知道要采取什么方法来让网格在屏幕上显示。我能想象到的最糟糕的方式是为 81 个单独的 UITextFields 提供 81 个单独的网点......在可可应用程序中,我只需将它们嵌入到 NSMatrix 中就可以了,但 iPhone 上没有 NSMatrix 的替代品。

我现在正在考虑生成一个 HTML 文件并在 UIWebView 中显示它,但即使这样似乎也不是解决这个问题的最佳方法。你会推荐什么?

0 投票
4 回答
11924 浏览

java - 构建高效的数独求解器

是的,我知道这不是什么新鲜事,而且已经有很多问题(它甚至有自己的标签),但我想用 Java 创建一个数独求解器,只是为了训练自己编写更多的代码高效的。

在程序中执行此操作的最简单方法可能是通过大量的 for 循环解析每一列和每一行,收集每个单元格的可能值,然后以一种可能性(无论它们是否只包含 1 个数字,或者它们是行/列中唯一包含此数字的单元格),直到您解决了难题。当然,对动作的纯粹思考应该在每个程序员的脑海中升起一面红旗。

我正在寻找的是以最有效的方式解决这个傻瓜的方法(请尽量不要包含太多代码 - 我想自己弄清楚那部分)。

如果可能的话,我想避免使用数学算法——那些太容易了,而且 100% 不是我的工作。

如果有人可以提供一个逐步、有效的思维过程来解决数独难题(无论是由人还是计算机),我会非常高兴:)。我正在寻找一些模糊的东西(所以这是一个挑战),但信息量足够大(所以我并没有完全迷失)让我开始。

非常感谢,

贾斯蒂安·迈耶

编辑:

看着我的代码,我开始思考:存储这些求解状态(即数独网格)的一些可能性是什么。我想到了 2D 阵列和 3D 阵列。哪个可能是最好的?2D 可能更容易从表面管理,但 3D 阵列也会提供“盒子”/“笼子”编号。

编辑:

没关系。我将使用 3D 数组。