- Créez un dossier
PIT_sudoku_<nom>_<prénom>, en remplaçant<nom>et<prénom>par... votre nom et prénom, respectivement. Ce sera votre espace de travail pour ce projet. - Déplacez le fichier
sudoku_db.txtdans votre espace de travail. - Créez deux sous-dossiers
scriptetsrc. - Dans le sous-dossier
script, créez un fichiercompress.shcontenant l'instruction en bash permettant de compresser l'intégralité de votre espace de travail à l'exception du fichiersudoku_db.txtdans une archivePIT_sudoku_<nom>_<prénom>.tar.gz. Ce script sera exécuté à partir du dossier parent de votre espace de travailPIT_sudoku_<nom>_<prénom>. - Rendez ce script exécutable.
- Déplacez les fichiers
grid.py,solver.py,test_grid.py,test_solver.pyetsolve_all_sudokus.pyfournis dans la même archive que ces consignes dans le sous-dossiersrc. - Vérifiez que les fichiers
test_grid.py,test_solver.pyetsolve_all_sudokus.pysoient tous exécutables. - Dans le sous-dossier
script, créez un fichierinstall.shcontenant l'instruction en bash permettant d'ajouter à la fin du fichier~/.bashrcune ligne modifiant la variable d'environnement PATH afin de lancer les programmes en python de ce projet depuis n'importe quel autre dossier. Ce script sera exécuté à partir de votre espace de travailPIT_sudoku_<nom>_<prénom>.
- Complétez le fichier
grid.pyen vous laissant guider par les docstrings. - Testez votre implémentation de
SudokuGriden appelant le scripttest_grid.py.
- Dans le sous-dossier
src, rédigez un programme en python appeléplay_sudoku.pypermettant de jouer au Sudoku en utilisant votre implémentation deSudokuGrid.
- Ce script devra accepter un argument de la ligne de commande donnant le nom du fichier et le numéro de ligne à partir desquels initialiser la grille.
- Si cet argument n'est pas donné, le script demandera à l'utilisateur de saisir manuellement une grille.
- Il alternera ensuite les étapes suivantes:
- Affichage de l'état actuel de la grille;
- Saisie utilisateur de la position et de la valeur à écrire;
- Vérification de la validité de la saisie;
- Inscription dans la grille de la valeur donnée à la position donnée si valide.
- Faites du fichier
play_sudoku.pyun programme exécutable. - Bonus / Optionnel:
Pour les plus acharnés d'entre vous, créez une classe
SudokuGUIdans un nouveau fichiersrc/gui.pyimplémentant une interface graphique pour jouer au Sudoku, en utilisant votre implémentation deSudokuGridcomme représentation interne. Nous vous conseillons d'utiliser le paquettkinter(backend GTK) ou bien le paquetPyQt5(backend Qt), qu'il faudra probablement installer vous-même... Créez ensuite un programmesrc/play_sudoku_gui.py(qu'il faudra aussi rendre exécutable) mettant en œuvre cette interface graphique.
- Complétez le fichier
solver.pyen vous laissant guider par les docstrings. - Testez votre implémentation de
SudokuSolveren appelant le scripttest_solver.py. - Testez les performances de votre implémentation de
SudokuSolveren appelant le scriptsolve_all_sudokus.py.