websudoku_cpp
1.0.0
用于生成有效数独谜题以及网络数独解决方案的 Scraper。
Websudokucpp 是一个简单的网络抓取工具,用于从 Websudoku.com 下载数独谜题和解决方案。核心 HTTP 请求功能是使用出色的 cpp-httplib 仅标头库来实现的。
为了抓取谜题和解决方案,websudokucpp 只需向 Websudoku.com 发出 HTTP 请求,并从生成的 HTML 中解析<INPUT NAME="cheat"
和<INPUT ID="editmak">
元素。
该项目可以非常轻松地构建 - 首先使用子模块克隆存储库,然后您可以像任何其他 CMake 项目一样构建它。
foo@bar:~ $ git clone --recurse-submodules [email protected]:patrick--/websudoku_cpp.git
foo@bar:~ $ mkdir build
foo@bar:~ $ cd build
foo@bar:~ $ cmake ..
foo@bar:~ $ make
现在,您可以使用以下命令运行示例main.cpp
文件:
foo@bar:~ $ ./websudoku_cpp
默认构造函数将难度设置为Puzzle_difficulty::hard
。
Websudoku ws = Websudoku();
但是,您也可以创建具有特定难度的实例。选项有:
Puzzle_difficulty::easy
Puzzle_difficulty::medium
Puzzle_difficulty::hard
Puzzle_difficulty::evil
Websudoku ws = Websudoku(Puzzle_difficulty::medium);
您还可以随时更新难度:
ws.set_difficulty_level(Puzzle_difficulty::evil);
要真正生成拼图,您需要进行下载。
ws.download_new_puzzle();
或者,假设您想要下载不同难度级别的谜题,但不一定想要更改实例的难度级别。
ws.download_new_puzzle(Puzzle_difficulty::evil)
下载拼图后,您可以将其打印为字符串或将其写入文件。这两种方法都有一个可选的布尔include_solution
标志,可以打印或写入您的谜题以及解决方案。
std::cout << " Printing puzzle along with solution: " << ws.to_str( true ) << " n " ;
std::cout << " Writing puzzle with solution to file: " << " n " ;
ws.write_to_file( " foo.txt " , true );
输出将如下所示:
9 7 6 - - - 5 8 -
- - - 4 - 7 6 2 -
3 - - 5 6 8 7 - -
- - - - - - 4 - 8
- 5 - 1 - 4 - 6 -
6 - 2 - - - - - -
- - 5 3 8 6 - - 7
- 1 7 9 - 2 - - -
- 6 3 - - - 2 9 5
------------------
9 7 6 2 1 3 5 8 4
5 8 1 4 9 7 6 2 3
3 2 4 5 6 8 7 1 9
1 3 9 6 2 5 4 7 8
7 5 8 1 3 4 9 6 2
6 4 2 8 7 9 3 5 1
2 9 5 3 8 6 1 4 7
4 1 7 9 5 2 8 3 6
8 6 3 7 4 1 2 9 5
------------------