数独问题求解一:任务


项目代码仓库地址: https://github.com/wzh994/wzh
后续博客请进入博主主页浏览!!!
数独求解问题二中的PSP已在项目结束后进行更新!!!

一、任务

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

二、要求

  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与可执行文件在同一目录下,生成文件时请使用相对路径!
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值