About Sudoku
环境配置
安装依赖 pip install -r requirements.txt
项目简介
实现一个命令行程序,程序能实现两个要求:
-
生成不重复的数独终局至文件
- 在命令行中使用-c参数加数字N(1<=N<=1000000)控制生成数独终局的数量,例如下述命令将生成20个数独终局至文件中:
python ./main -c 20
- 将生成的数独终局用一个文本文件(假设名字叫sudoku.txt)的形式保存起来,每次生成的txt文件需要覆盖上次生成的txt文件,文件内格式如下,数与数之间由空格分开,终局与终局之间空一行,行末无空格
- 程序在处理命令行参数时,不仅能处理格式正确的参数,还能够处理各种异常情况,如
python ./main -c abc
- 在生成数独矩阵时,左上角的第一个数字为:(学号后两位相加)%9 + 1。本项目为学号后两位18相加,运算后结果为1,所以所有的数独矩阵左上角第一个数恒为1。
- 在命令行中使用-c参数加数字N(1<=N<=1000000)控制生成数独终局的数量,例如下述命令将生成20个数独终局至文件中:
-
读取文件内的数独问题,求解并将结果输出到文件
- 在命令行中使用-s参数加文件名的形式求解数独,并将结果输出至文件,如:
python ./main -s absolute_path_of_puzzlefile
程序将从路径中读取数独题目,并将数独题目的一个可行解输出至与程序同目录的sudoku.txt(本项目中题目文件Sudoku_Problem.txt
,输出解文件Sudoku_Problem_Answer.txt
) 中,要求与生成终局相同。 - 格式如下,其中0代表空格,题目与题目之间空一行,最后一个题目后无空行:
9 0 8 0 6 0 1 2 4 2 3 7 4 5 1 9 6 8 1 4 6 0 2 0 3 5 7 0 1 2 0 7 0 5 9 3 0 7 3 0 1 0 4 8 2 4 8 0 0 0 5 6 0 1 7 0 4 5 9 0 8 1 6 8 9 0 7 4 6 2 0 0 3 0 5 0 8 0 7 0 9 9 0 0 8 0 0 4 0 0 ......
- sudoku.txt格式与生成终局要求相同
- 数独题目个数(1<=N<=1000000),保证文件中数独格式正确。
- 在命令行中使用-s参数加文件名的形式求解数独,并将结果输出至文件,如:
附加题
实现一个GUI,可以随机生成数独题目,空白方块个数在30-60之间,且每个3*3小方格内至少有两个空格,可以判断结果是否正确。(但由于时间原因,没有对GUI部分做代码质量优化与测试。)
使用说明:直接运行即可生成题目,鼠标选择空白格填入数字,填完数字后点击提交按钮可以判断正确性。在生成题目的同时,默认会在终端输出一个参考答案(做不出来数独的时候可以悄悄看看,参考一下,嘻嘻)。界面比较简陋,别嫌弃哈!
项目相关连接
Github项目地址:https://github.com/Garvey98/Sudoku