You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# SudokuMatrix
> 程序设计基础:数独矩阵实验
>
> 作者:李彦筱
由于教学资料中没有实验报告的模版,暂时只提交说明性文件。
## 警告
头歌平台上直接查看 .gitignore 和 Makefile 时,得到的是 base64 编码后的结果。这可能是个 bug。
请从平台通过下载 zip 的方式下载本程序所有文件之后,从其中查看这两个文件。
## 程序运行
### 类 Unix 系统( macOS, Linux)
- 确保您的系统已经安装了 gcc 与 make
- 在终端中打开作业所在文件夹,输入 `make` 即可编译
- 输入 `./SudokuMatrix` 即可运行程序
> 输入 `make clean` 可以清除已编译的文件,只留源代码
### Windows 下
- 安装 mingw-w64 编译器。把它的 `bin` 文件夹添加到环境变量里。
- 在终端( powershell , cmd 都行)中打开作业所在文件夹,输入 `mingw32-make` 即可编译
- 输入 `SudokuMatrix` 即可运行程序
- Release 文件夹下提供了一份已编译的 Windows 程序( 64位) , 仅测试了 `solveMatrix` .
## 程序内容
`main.c` 中包含了 `testRandomMatrix` , `testJudgeMatrix` , `testSolveMatrix` 三个测试函数。在主函数中分别调用每一个函数,即可查看该部分的测试效果。
`testRandomMatrix` 测试了程序生成随机数独矩阵的能力。请注意,由于题目描述要求,生成的随机数独矩阵甚至不一定满足 `judgeMatrix` 对数独矩阵的要求
> `judgeMatrix` 中要求数独矩阵的列不能有重复的数字;但 `randomMatrix` 生成矩阵的要求不包含这点,导致生成的矩阵绝大部分都不满足要求
`testJudgeMatrix` 测试了程序判断数独矩阵是否有效的能力。数独矩阵有效,仅当它每一行、每一列、每个九宫格内没有重复的两个数字。
`testSolveMatrix` 测试了程序对三个预定义矩阵的求解能力。这个函数需要你传递 0~ 2 的一个整数作为参数,以便指定你要用哪个预定义矩阵做测试。这三个矩阵:
- 第一个:满足数独矩阵的要求,有解
- 第二个:不满足数独矩阵的要求,因此无解
- 第三个:满足数独矩阵的要求,但是无解
本函数不使用随机生成的数独矩阵。这是因为随机生成的数独矩阵几乎都不满足数独矩阵的要求(大概率存在列冲突),导致十个矩阵没一个是能解的…
四个要求的函数分别处于 `PrintMatrix.c` , `RandomMatrix.c` , `JudgeMatrix.c` 和 `SolveMatrix.c` 中。矩阵类本身的定义位于 `SudokuMatrix.h` 当中,其中函数(比如构造函数,析构函数)的实现位于 `SudokuMatrix.c` 中。想要查看这些函数的实现的话,请到对应文件中寻找。我已经为每个函数写了很详细的注释了,