nsi:tds:jeux:mastermind
Mastermind
Le jeu de Mastermind se joue a deux.
- Le joueur 1 choisit un code de 5 items, caché.
- Ce code est composé de lettres, de A à H.
Par exemple EFAAB est un code possible. - Le joueur 2 doit faire des essais pour deviner le code.
- À chaque proposition du joueur 2, le joueur 1 répond en indiquant pour chaque item :
- 2 s'il est bien placé,
- 1 s'il mal placé
- 0 s'il n'est pas dans le code.
Exemples de réponses possibles
- Si
code = "EFAAB"etproposition = "AFBBC"alorsreponse = "12100" - Si
code = "EFAAA"etproposition = "AAFAD"alorsreponse = "10120"
À faire
- Écrire une fonction
test_code(bon_code,essai_code)qui reçoitbon_codeetessai_codeet qui renvoie la réponse indiquant ce qui est bon, mauvais, mal placé. explications ci-dessous ! - Testez
- Écrire une une fonction
code_aleatoire()qui génère un code au hasard
Utilisez la bibliothèquerandom. - Écrire le programme qui exécute une partie :
- choix du code aléatoirement par la machine,
- demande à l'utilisateur de saisir un essai de code,
- test du code proposé,
- affichage du résultat du test, et cela en boucle jusqu'à ce que le bon code soit trouvé.
Pour aider à faire test_code qui n'est pas simple…
- écrire une fonction
replace_at_index(chaine, car, index)qui reçoit une chaîne et un indice et qui remplace le caractère à l'indice donné parcar. - Il faut faire 2 passages :
- un premier passage pour repérer les caractères bien placés
- un 2e passage pour repérer les caractères mal placés.
- On commence avec la réponse
"00000" - 1er passage, pour chaque caractère de
bon_code, on regarde s'il correspond à son vis à vis dansessai_code.- Si c'est le cas, on remplace dans la réponse le
0correspondant par2et dansbon_codeetessai_codeon remplace le caractère correspondant par_. - Sinon on ne fait rien.
- 2e passage : Pour chaque caractère de
essai_codedifférent de_, on regarde s'il est présent dansbon_code. Si oui, on remplace le0correspondant par1et les caractères correspondant par_.
Exemple d'exécution : bon_code = "AAFBG" ; essai_code = "CAAFG".
La réponse devrait être "02112".
| action | bon_code | essai_code | réponse |
|---|---|---|---|
| initialisation | AAFBG | CAAFG | 00000 |
| début 1er passage | |||
lecture A dans bon_code : pas bien | AAFBG | CAAFG | 00000 |
lecture A dans bon_code : bien | A_FBG | C_AFG | 02000 |
lecture F dans bon_code : pas bien | A_FBG | C_AFG | 02000 |
lecture B dans bon_code : pas bien | A_FBG | C_AFG | 02000 |
lecture G dans bon_code : bien | A_FB_ | C_AF_ | 02002 |
| 2e passage… | |||
lecture C dans essai_code, absent de bon_code | A_FB_ | C_AF_ | 02002 |
lecture A dans essai_code, présent dans bon_code | __FB_ | C__F_ | 02102 |
lecture F dans essai_code, présent dans bon_code | ___B_ | C____ | 02112 |
On renvoie donc "02112".
nsi/tds/jeux/mastermind.txt · Dernière modification : de goupillwiki

