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.
docstrings
) en anglais? 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:
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!
return
dans une fonction?
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.
random
(et/ou d'autres)?
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
.
word_in_place
et word_on_board
?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
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.
ask_yes_no
fournie? Il s'agit d'une ambiguïté de l'énoncé. Concrètement, vous pouvez:
Nous acceptons les deux possibilités.