1 Jeu de sudoku

Transcription

1 Jeu de sudoku
Université de Caen Basse-Normandie
Département d’informatique
L1 informatique, 2012–2013
Méthodologie informatique
Devoir
À rendre pour le lundi 15 avril 2013.
Ce devoir doit être fait individuellement (pas de binômes). Vous rendrez un rapport
papier ainsi que le code sous forme électronique. Une soutenance d’environ dix minutes
aura lieu le 15 avril 2013 (les conditions précises seront fixées ultérieurement). Il s’agit
de choisir l’un des sujets présentés ci-après.
Le code est à écrire en Python. Il devra être modulaire, lisible et commenté, et chaque
fichier devra indiquer les nom et prénom de son auteur. Vous devrez également joindre
des fichiers de tests ou des « doctests » pertinents. Le rapport devra présenter votre
travail, et en particulier les points suivants : fonctionnalités réalisées ou non, éventuelles
améliorations apportées ; mode d’emploi ; analyse et conception ; tests. Seuls les points
importants ou difficiles devront être détaillés.
1
Jeu de sudoku
Le sudoku est un jeu pour un seul joueur, consistant à remplir de chiffres (entre 1 et
9) une grille 9x9 divisée en trois carrés 3x3 (en haut à gauche, en haut au centre, etc.).
Initialement des chiffres sont disposés dans certaines cases, et le but est de placer dans
chacune des autres cases un chiffre entre 1 et 9 de sorte qu’un même chiffre n’apparaisse
pas deux fois dans une même ligne, une même colonne ou un même carré 3x3.
Il s’agit ici de réaliser un logiciel permettant à un joueur de rentrer une grille de sudoku
puis de la compléter, le logiciel vérifiant les contraintes.
Fonctionnalités de base :
–
–
–
–
saisie d’un chiffre (pour l’initialisation ou la résolution),
vérification du respect des contraintes et détermination de la fin du jeu,
affichage de la grille,
menu général de jeu.
Fonctionnalités optionnelles :
– affichage des chiffres respectant les contraintes pour une case donnée, possibilité de
1
revenir en arrière, remplissage automatique des cases pour lesquelles un seul chiffre
est disponible...
Indication :
– on pourra représenter la grille de jeu par une liste de listes.
2
Le compte est bon
Il s’agit d’écrire une application permettant de jouer (à un seul joueur) au jeu du
“compte est bon”, et de résoudre automatiquement des problèmes de ce jeu.
Dans ce jeu, six nombres “de base” sont choisis aléatoirement dans l’ensemble
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 25, 50, 75, 100},
et un nombre “cible’ est choisi aléatoirement entre 100 et 999. L’objectif du joueur est
de trouver une opération impliquant les nombres de base et les opérateurs +, −, ×, /, et
dont l’évaluation est le nombre cible, ou un nombre qui s’en approche le plus possible.
Chaque nombre de base peut être utilisé au plus une fois, mais chaque opérateur peut
être utilisé un nombre quelconque de fois.
L’application devra tout d’abord permettre à un utilisateur humain de jouer à ce jeu.
Pour cela, vous devrez réaliser une interface (pas forcément graphique) pour saisir les
opérations et visualiser les résultats intermédiaires.
L’application doit ensuite permettre d’obtenir la meilleure solution (exacte si elle existe,
la plus proche sinon). Pour cela, vous dever proposer un calcul automatique. Vous
pouvez par exemple explorer tous les calculs possibles.
De manière optionnelle (valorisée par un bonus en terme de points), vous pourrez proposer un calcul automatique plus efficace, ou encore une interface graphique avec saisie
à la souris.
2