مكشطة لتوليد ألغاز سودوكو صالحة مع حلول من websudoku.
Websudokucpp عبارة عن مكشطة ويب مباشرة لتنزيل ألغاز Sudoku وحلولها من Websudoku.com. يتم تنفيذ وظيفة طلب HTTP الأساسية باستخدام مكتبة رأس cpp-httplib الرائعة فقط.
للتخلص من الألغاز والحلول، يقوم websudokucpp ببساطة بتقديم طلب HTTP إلى Websudoku.com ويقوم بتحليل عناصر و
من HTML الناتج.
يمكن إنشاء هذا المشروع بسهولة تامة - قم أولاً باستنساخ الريبو باستخدام وحدات فرعية، ثم يمكنك جعله مثل أي مشروع 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
------------------