Python中最简短的数独求解器

1 投票
1 回答
1184 浏览
提问于 2025-04-18 09:58

我开始用Python写自己的数独解题器,但速度太慢,而且不够优雅,
所以我开始寻找一种更优雅的解决方法。

我偶然发现了一个神秘的数独解题器,还有社区给出的很好的解释:
Python中最短的数独解题器 - 它是如何工作的?
我理解了那个解释得很清楚的版本,但我有一个问题:

当我用Python 3.0以下的版本运行Bill Barksdale解释的那个版本时,解一个数独需要花费比较长的时间,但最终能成功并打印出正确的答案。
而当我用Python 3.0或3.4运行这个程序时,程序在不到一秒钟内就完成了,但却打印出了错误的答案。

我尝试找出Python 3.0以上版本的问题,但我完全没有头绪。
有人能告诉我为什么这个程序在Python 3.0以下能正常运行,而在3.0以上就不行吗?

谢谢

1 个回答

0

我怀疑问题可能出在Python 3和Python 2之间的除法运算符上。在Python 2中,2/3 = 0,而在Python 3中,2/3 = 0.66666。这个差异会搞乱逻辑。你可以试着在Python 2中加上from __future__ import division,或者在Python 3中把所有的/替换成//来运行。

一般来说,难以理解的代码也是难以维护的代码,所以我建议不要把它称作优雅。

撰写回答