Python中最简短的数独求解器
我开始用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中把所有的/
替换成//
来运行。
一般来说,难以理解的代码也是难以维护的代码,所以我建议不要把它称作优雅。