/Sudoku

About Sudoku

Primary LanguagePythonMIT LicenseMIT

Sudoku

About Sudoku

环境配置

安装依赖 pip install -r requirements.txt

项目简介

实现一个命令行程序,程序能实现两个要求:

  • 生成不重复的数独终局至文件

    1. 在命令行中使用-c参数加数字N(1<=N<=1000000)控制生成数独终局的数量,例如下述命令将生成20个数独终局至文件中: python ./main -c 20
    2. 将生成的数独终局用一个文本文件(假设名字叫sudoku.txt)的形式保存起来,每次生成的txt文件需要覆盖上次生成的txt文件,文件内格式如下,数与数之间由空格分开,终局与终局之间空一行,行末无空格
    3. 程序在处理命令行参数时,不仅能处理格式正确的参数,还能够处理各种异常情况,如 python ./main -c abc
    4. 在生成数独矩阵时,左上角的第一个数字为:(学号后两位相加)%9 + 1。本项目为学号后两位18相加,运算后结果为1,所以所有的数独矩阵左上角第一个数恒为1。
  • 读取文件内的数独问题,求解并将结果输出到文件

    1. 在命令行中使用-s参数加文件名的形式求解数独,并将结果输出至文件,如: python ./main -s absolute_path_of_puzzlefile 程序将从路径中读取数独题目,并将数独题目的一个可行解输出至与程序同目录的sudoku.txt(本项目中题目文件Sudoku_Problem.txt,输出解文件Sudoku_Problem_Answer.txt) 中,要求与生成终局相同。
    2. 格式如下,其中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
     ......
    
    1. sudoku.txt格式与生成终局要求相同
    2. 数独题目个数(1<=N<=1000000),保证文件中数独格式正确。

附加题

实现一个GUI,可以随机生成数独题目,空白方块个数在30-60之间,且每个3*3小方格内至少有两个空格,可以判断结果是否正确。(但由于时间原因,没有对GUI部分做代码质量优化与测试。)

使用说明:直接运行即可生成题目,鼠标选择空白格填入数字,填完数字后点击提交按钮可以判断正确性。在生成题目的同时,默认会在终端输出一个参考答案(做不出来数独的时候可以悄悄看看,参考一下,嘻嘻)。界面比较简陋,别嫌弃哈!

项目相关连接

Github项目地址:https://github.com/Garvey98/Sudoku

项目博客地址: https://garvey98.github.io/2018/12/02/Sudoku/