发布评论
评论(4)
若能看破又如何2025-01-12 20:30:37
我的方法是将您的第一种方法和第二种方法结合在一起。
首先,您必须有一个数独求解器。将求解器应用于空数独。那就是在没有线索的情况下寻找数独的解法。按从左上到右下的顺序填写数字。不然就有时间问题了。我不知道为什么。不管怎样,它的工作速度非常快,无需等待即可完成数独谜题。当您应用回溯时,请打乱每个位置的可能数字列表。否则,你每次都会遇到相同的难题。
其次,随机化所有职位的新列表。这是一个按随机顺序排列的 81 个位置的列表。根据这个顺序列表,尝试从上面的谜题中删除数字。每次删除一个数字时,您都必须检查它是否有多个解决方案。如果它有不止一种解决方案。该数字应放回并尝试随机列表中的下一个位置。此过程一直持续到列表末尾或者您已成功从拼图中删除 64 个数字。这个数字是64,因为有人证明了不存在少于17条线索且有唯一解的数独。此过程持续 15 秒到 2 分钟不等。通常 30 秒即可完成一个数独谜题。
第三,如果您不想为每个数独谜题等待 30 秒到 2 分钟,您可以对上述数独应用一些突变。这包括切换行和列、旋转。您还可以重新映射数字。例如,1→2、2→3...9→1。经过旋转和重新映射后,没有人会注意到这是原始的数独。
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
您看过现有的算法和/或代码吗?
查看https://www.sudokuwiki.org/Sudoku_Creation_and_Grading.pdf了解算法描述,以及 Peter Norvig 的文章 http://norvig.com/sudoku.html。
Python 中有一些实现。到目前为止,我从未见过已发布的 C# 解决方案。
Have you looked at existing algorithms and/or code?
Check out https://www.sudokuwiki.org/Sudoku_Creation_and_Grading.pdf for an algorithmic description, and Peter Norvig's article at http://norvig.com/sudoku.html.
There are some implementations out there in Python. So far I've never seen a published C# solution.