Scraper pour générer des puzzles sudoku valides ainsi que des solutions de websudoku.
Websudokucpp est un grattoir Web simple permettant de télécharger des puzzles et des solutions Sudoku depuis Websudoku.com. La fonctionnalité de base des requêtes HTTP est implémentée à l’aide de la fantastique bibliothèque d’en-têtes cpp-httplib uniquement.
Pour résoudre des énigmes et des solutions, websudokucpp envoie simplement une requête HTTP à Websudoku.com et analyse les éléments et
du code HTML résultant.
Ce projet peut être construit assez facilement - clonez d'abord le dépôt avec des sous-modules, puis vous pouvez le créer comme n'importe quel autre projet 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
Maintenant, vous exécutez l'exemple de fichier main.cpp
avec :
foo@bar:~ $ ./websudoku_cpp
Le constructeur par défaut définit la difficulté sur Puzzle_difficulty::hard
.
Websudoku ws = Websudoku();
Cependant, vous pouvez également créer une instance avec une difficulté spécifique. Les options sont :
Puzzle_difficulty::easy
Puzzle_difficulty::medium
Puzzle_difficulty::hard
Puzzle_difficulty::evil
Websudoku ws = Websudoku(Puzzle_difficulty::medium);
Vous pouvez également mettre à jour la difficulté à tout moment avec :
ws.set_difficulty_level(Puzzle_difficulty::evil);
Pour générer réellement un puzzle, vous devez effectuer un téléchargement.
ws.download_new_puzzle();
Alternativement, disons que vous souhaitez télécharger un puzzle d'un niveau de difficulté différent, mais que vous ne souhaitez pas nécessairement modifier le niveau de difficulté de votre instance.
ws.download_new_puzzle(Puzzle_difficulty::evil)
Une fois un puzzle téléchargé, vous pouvez l'imprimer sous forme de chaîne ou l'écrire dans un fichier. Les deux méthodes ont un indicateur booléen include_solution
facultatif qui imprime ou écrit votre puzzle avec la 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 );
Le résultat ressemblera à :
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
------------------