FAQ pour le Projet 1

Il y a deux informations divergentes quant au nombre maximum de lignes que peut contenir une fonction. Alors que 15 lignes, comme c'est précisé dans les règles de bonnes pratiques, est une limite communément admise, il nous a semblé qu'elle pouvait être ramenée à 10 lignes dans le cadre de ce projet (ainsi que précisé dans l'énoncé).
Veuillez noter que ce nombre concerne uniquement le nombre d'instructions; les commentaires (docstrings) ne sont donc pas comptés. En outre, les prints multiples peuvent être comptés comme une seule ligne. Toutefois, pour tempérer le ton péremptoire de l'énoncé, nous vous suggérons de prendre l'éventuel dépassement de cette limite comme un signal qui devrait vous inciter à vous arrêter et à reconsidérer la manière dont vous avez construit votre fonction: fait-elle bien une seule chose bien définie? ne serait-il pas mieux (plus clair) de créer/appeler l'une ou l'autre fonction? Dans des cas particuliers et justifiés, un léger dépassement de cette limite peut être acceptable, voire nécessaire.

Si l'anglais est l'option préférée, nous ne sanctionnerons pas les commentaires en français. Mieux vaut un commentaire en français clair, qu'une description anglaise incompréhensible.

Nous avons mis à disposition une version non compilée du module. Celui-ci est à importer de manière similaire que la version compilée:

  1. décompresser le fichier fourni “boggle_mod.tar.gz”,
  2. copier le fichier Boggle_mod.py dans le répertoire de votre projet,
  3. importer dans votre code avec import Boggle_mod (ceci remplace l'ancien import!)

Pour les étudiants ayant utilisé les modules compilés, il n'y a rien à faire. Les deux versions (compilée et non-compilée) fonctionnent de la même manière et contiennent les mêmes fonctions!

Non: un seul return par fonction. Il s'agit là d'une convention adoptée dans ce cours. Cela ne devrait d'ailleurs pas avoir de répercutions dramatiques sur votre code.

La librairie random ayant été vue lors des travaux pratiques, l'utilisation de toutes les fonctions qui la composent est permise. Il en va de même pour l'ensemble des méthodes liées aux types str, list et tuple.

  1. word_on_board

Cette fonction renvoie True si le mot est présent dans la grille EN RESPECTANT LES RÈGLES DU BOGGLE. Donc dans la grille ci dessous :
A B S E
A L U H
M E Y T
N R B J

la fonction renvoie True pour ”MER” mais pas pour “SALUT

word_on_board(“MER”, board) == True word_on_board(“SALUT”, board) == False

  1. word_in_place

Elle fait la même chose uniquement si le mot commence dans la case donnée en paramètre (attention les indices commencent à 0 donc la case en haut à gauche est la case 0,0) Dans l'exemple ci dessus :
word_in_place(“MER”, board, 0, 1) == False
word_in_place(“MER”, board, 2, 0) == True
word_in_place(“MER”, board, 3, 1) == False

Il est évident que word_on_board appellera word_in_place (de la même manière que play_boggle appelera play_one_round). Ce découpage imposé est là pour vous aider.

En d'autres termes, les dés du tableau doivent-ils, en plus d'afficher une face aléatoire, être placés également aléatoirement sur le tableau? La réponse est: oui. Le premier dé renvoyé par get_dices() ne doit donc pas se retrouver systématiquement sur la première case du tableau; cette position (ainsi que celle des autres dés) doit changer aléatoirement d'une partie à l'autre.

Il s'agit d'une ambiguïté de l'énoncé. Concrètement, vous pouvez:

  1. demander à l'utilisateur s'il veut rejouer après les 5 tours, ou
  2. ne rien lui demander et quitter le programme après les 5 tours.

Nous acceptons les deux possibilités.