数独问题求解一:任务

只谈情不闲聊 提交于 2019-12-27 09:57:55


项目地址:https://github.com/wzh994/wzh

一、任务

实现一个能够生成数独终局并且能求解数独问题的控制台程序。

二、要求

  1. 阅读个人软件开发流程(PSP)的相关资料。

  2. 可选的语言包括:C++, Java, Pythono运行环境为64bit Windows 10o

  3. 提交的代码要求经过代码质量分析工具的分析并消除所有的警告。如Code Quality Analysis.

  4. 完成项目的首个版本之后,请使用性能分析工具来找出代码中的性能瓶颈并进行改进。

  5. 使用单元测试对项目进行测试,并使用插件查看测试分支覆盖率等指标;并写出至少10 个测试用例确保你的程序能够正确处理各种情况。如Studio Profiling TooISc

  6. 使用GitHub来管理源代码和测试用例,代码有进展即签入GitHubo签入记录不合理的 项目会被抽查询问项目细节

  7. 按照要求发布博客,结合个人项目的实践经历,撰写解决项目的心路历程与收获。博客 与GitHub项目明显不符的作业将取消作业成绩

注意:要求3、4、5根据所选编程语言使用对应的开发工具来完成。.

三、作业提交

・撰写一个博客,要求参见博客作业要求。

・在个人博客上发布项目源代码(包含单元测试用例)的GitHub链接,将会在测试环境中
检查程序的正确性。

•正确的程序会再进行性能测试,根据性能的好坏进行评分;不正确的程序没有性能的分 数。

四、需求

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

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

  2. 读取文件内的数独问题,求解并将结果输出到文件

生成终局

  1. 在命令行中使用-c参数加数字N (1<=N<=1000000)控制生成数独终局的数量,例 如下述命令将生成20个数独终局至文件中:

sudoku.exe -c 20

  1. 将生成的数独终局用一个文本文件(假设名字叫sudoku.txt)的形式保存起来,每 次生成的txt文件需要覆盖上次生成的txt文件,文件内的格式如下,数与数之间由空格
    分开,终局与终局之间空一行,行末无空格:
    在这里插入图片描述

3
. 程序在处理命令行参数时,不仅能处理格式正确的参数,还能够处理各种异常的情 况,如:

sudoku.exe -c abc

  1. 在生成数独矩阵时,左上角的第一个数为:(学号后两位相加)% 9 + 1。例如学 生A学号后2位是80,则该数字为(8+0) % 9 + 1 = 9,那么生成的数独棋盘应如下(x 表示满足数独规则的任意数字):

在这里插入图片描述

求解数独

  1. 在命令行中使用-S参数加文件名的形式求解数独,并将结果输出至文件,如:

sudoku.exe -s absolute_path_of puzzlefile

程序将从路径中读取数独题目,并将数独题目的一个可行解输出至与sudoku.exe同 目录的sudoku.txt中,要求与生成终局相同。

  1. 格式如下,其中0代表空格,题目与题目之间空一行,行末无空格,最后一个数独 题目后无空行:

在这里插入图片描述
3. sudoku.txt的格式如下(与生成终局的要求相同):
在这里插入图片描述

  1. 数独题目个数N (1<=N<=1000000),保证文件中数独格式正确。

五、测试须知

所有提交到Github上的项目均需要建立一个名字为BIN的文件夹,里面必须含有可执行
文件与相关的依赖库,请注意以下两点:

·确保可执行文件的名字统一为sudoku.exeo (注:Java和Python程序需要提供可接受参数的执行脚本)

·确保生成的棋盘文件sudoku.txt与可执行文件在同一目录下,生成文件时请使用相对路径!
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!