c++ - 在 C++ 中绘制数独网格
问题描述
所以我一直在编写一个程序,它将从外部文本文件中获取一个数独,将其填充到一个二维数组中,然后打印解决的结果。我已经完成了解决程序的所有逻辑,但是每当我将数独输出到控制台时,它看起来像这样:
8 1 2 7 5 3 6 4 9
9 4 3 6 8 2 1 7 5
6 7 5 4 9 1 2 8 3
1 5 4 2 3 7 8 9 6
3 6 9 8 4 5 7 2 1
2 8 7 1 6 9 5 3 4
5 2 1 9 7 4 3 6 8
4 3 8 5 2 6 9 1 7
7 9 6 3 1 8 4 5 2
现在,如果我的目标只是输出结果,那将非常好,但我想要一些更易于阅读和类似 Sodoku 的东西。
理想情况下,我希望它们在 Sodoku 中所有必要的块周围是 3x3 方格,并使其看起来像这样或至少类似:
----- ------ ------
|8 1 2| 7 5 3| 6 4 9|
|9 4 3| 6 8 2| 1 7 5|
|6 7 5| 4 9 1| 2 8 3|
----- ------ ------
|1 5 4| 2 3 7| 8 9 6|
|3 6 9| 8 4 5| 7 2 1|
|2 8 7| 1 6 9| 5 3 4|
----- ------ ------
|5 2 1| 9 7 4| 3 6 8|
|4 3 8| 5 2 6| 9 1 7|
|7 9 6| 3 1 8| 4 5 2|
----- ------ ------
在这里,我还将包括我的数独本身的打印功能:
void print_puzzle()
{
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
cout << puzzle[i][j] << " ";
}
cout << endl;
}
}
如果有人可以帮助我进行具体实施以实现我的目标,那将非常有帮助
编辑
我已将代码的打印功能重写为输出数独的位置,如下所示:
------ ------ ------
| 8 1 2 | 7 5 3 | 6 4 9 |
| 9 4 3 | 6 8 2 | 1 7 5 |
| 6 7 5 | 4 9 1 | 2 8 3 |
------ ------ ------
| 1 5 4 | 2 3 7 | 8 9 6 |
| 3 6 9 | 8 4 5 | 7 2 1 |
| 2 8 7 | 1 6 9 | 5 3 4 |
------ ------ ------
| 5 2 1 | 9 7 4 | 3 6 8 |
| 4 3 8 | 5 2 6 | 9 1 7 |
| 7 9 6 | 3 1 8 | 4 5 2 |
------ ------ ------
我通过将我的函数编辑为以下内容来做到这一点:
void printPuzzle()
{
for (int i = 0; i < 9; i++)
{
if (i == 0 || i == 3 || i == 6)
{
cout << " ------ ------ ------" << endl;
}
for (int j = 0; j < 9; j++)
{
if (j == 0 || j == 3 || j == 6)
{
cout << "| ";
}
cout << puzzle[i][j] << " ";
}
cout << "|";
cout << endl;
}
cout << " ------ ------ ------" << endl;
}
解决方案
推荐阅读
- swift - 具有自定义类类型的 Swift CoreData 保存属性
- html - 如何使 child z-index 超过 parent 或任何其他方式来达到效果?
- apache-flink - 在我的简单应用程序中没有创建检查点文件
- postgresql - postgres数据与同一张表中的多个服务器同步
- ruby-on-rails - 如何在点击 ruby on rails 时从下拉列表中获取选定的值?
- angular - 如何在使用 observable 更新数组时更新 *ngFor 以及如何在网站加载时初始化 observable?
- typo3 - TYPO3 routeEnhancers 在根页面上带有后缀“.html”
- java - 在 UPDATE 语句中绑定和添加参数:PostgreSQL
- javascript - 带有 Javascript 的 WebView 不断重新加载
- text-to-speech - iOS 13 Text To Speech (TTS - AVSpeechSynthesisVoice) 在更新后对某些用户崩溃