Skip to content
sudoku with python
Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
README.md
sudoku.py

README.md

sudoku

使用:

$ python suduku.py
请逐行输入数独内容,空白格用空格键代替,输入「A」初始化默认初级数独,输入「S」初始化默认最难数独,直接回车初始化默认高级数独
请输入第 1 行的内容:  17   29
请输入第 2 行的内容:78 2     
请输入第 3 行的内容:  9  18  
请输入第 4 行的内容: 1    6 2
请输入第 5 行的内容:   682   
请输入第 6 行的内容:9 6    7 
请输入第 7 行的内容:  34  5  
请输入第 8 行的内容:     3 96
请输入第 9 行的内容:17   62  

。。。

*** 循环结束 共计填入过 87 次 ***                                       
+-------+-------+-------+
| · 6 · | 3 · · | · · 1 |
| 9 · · | · · 6 | 7 · · |
| 4 · 3 | · · · | · 2 · |
+-------+-------+-------+
| 5 · 9 | 8 · · | · · · |
| · · 4 | 5 · 7 | 3 · · |
| · · · | · · 3 | 6 · 8 |
+-------+-------+-------+
| · 4 · | · · · | 8 · 3 |
| · · 1 | 2 · · | · · 7 |
| 3 · · | · · 8 | · 4 · |
+-------+-------+-------+

+-------+-------+-------+
| 7 6 2 | 3 9 5 | 4 8 1 |
| 9 1 8 | 4 2 6 | 7 3 5 |
| 4 5 3 | 7 8 1 | 9 2 6 |
+-------+-------+-------+
| 5 3 9 | 8 6 2 | 1 7 4 |
| 6 8 4 | 5 1 7 | 3 9 2 |
| 1 2 7 | 9 4 3 | 6 5 8 |
+-------+-------+-------+
| 2 4 5 | 6 7 9 | 8 1 3 |
| 8 9 1 | 2 3 4 | 5 6 7 |
| 3 7 6 | 1 5 8 | 2 4 9 |
+-------+-------+-------+
数独已全解
共计用时 31.01515769958496 毫秒

总结

数独难度大致可分为 3 种:

  • 简单,每个格子都能准确推演,运行时间 10ms 左右
  • 高级,中后期只需试错几次,运行时间 30ms 左右
  • 变态,前期几乎每次都要试错,运行时间 3000ms 左右
变态版数独:
+-------+-------+-------+
| 8 · · | · · · | · · · |
| · · 3 | 6 · · | · · · |
| · 7 · | · 9 · | 2 · · |
+-------+-------+-------+
| · 5 · | · · 7 | · · · |
| · · · | · 4 5 | 7 · · |
| · · · | 1 · · | · 3 · |
+-------+-------+-------+
| · · 1 | · · · | · 6 8 |
| · · 8 | 5 · · | · 1 · |
| · 9 · | · · · | 4 · · |
+-------+-------+-------+

写完了发现挺乱的,去搜索了一下,数独其实用深度优先搜索算法最合适,我写了一大堆有的没的,运行时间还比人家慢了 10 倍。。。主要是耗时在递归上了。

深度优先版运行变态版数独的时间大约在 300ms,等我学了相关算法再来优化吧。。。

You can’t perform that action at this time.