เครื่องมือขูดสำหรับสร้างปริศนาซูโดกุที่ถูกต้องพร้อมกับวิธีแก้ปัญหาจาก websudoku
Websudokucpp เป็นโปรแกรมขูดเว็บที่ตรงไปตรงมาสำหรับการดาวน์โหลดปริศนา Sudoku และวิธีแก้ปัญหาจาก Websudoku.com ฟังก์ชันคำขอ Core HTTP ถูกนำมาใช้โดยใช้ไลบรารีส่วนหัว cpp-httplib ที่ยอดเยี่ยมเท่านั้น
เพื่อไขปริศนาและวิธีแก้ปัญหา websudokucpp เพียงส่งคำขอ HTTP ไปที่ Websudoku.com และแยกวิเคราะห์องค์ประกอบ และ
จาก HTML ที่เป็นผลลัพธ์
โปรเจ็กต์นี้สามารถสร้างได้อย่างง่ายดาย ขั้นแรกให้โคลน repo ด้วยโมดูลย่อย จากนั้นคุณสามารถสร้างเหมือนโปรเจ็กต์ 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)
เมื่อดาวน์โหลดปริศนาแล้ว คุณสามารถพิมพ์เป็นสตริงหรือเขียนลงในไฟล์ได้ ทั้งสองวิธีมีแฟล็กตัวเลือก boolean 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
------------------