DEVOIRNONSURVEILLÉ1 INFORMATIQUE
Devoir Non Surveillé 1 – Informatique
Vous compléterez le fichier dns1.py disponible sur mon site. Pour qu’une fonction soit correcte, il faut qu’elle réussisse tous les tests proposés par lesassert.
Exercice 1
On considère la suite de Fibonacci (Fn)n∈Ndéfinie parF0=0,F1=1 et, pour toutn∈N, Fn+2=Fn+1+Fn
Compléter la fonctionfibonacci(n)donnée dans le scriptdns1.py. Cette fonction prend en paramètre un entiern et renvoie la valeur deFn.
Exercice 2
1. Écrire une fonctioncarre(x)qui prend en paramètre un réelxet renvoie la valeur dex2.
2. Écrire une fonctionsommeCarre(n,m)qui prend en paramètres deux entiers naturelsnÉmet renvoie la valeur de la somme
m
X
k=n
k2.
3. Modifier la fonction précédente pour qu’elle renvoie la valeur 0 lorsquen>m.
4. Plus généralement, écrire une fonctionsomme(f,n,m)qui prend en paramètres une fonction f et deux entiers naturelsnetmet renvoie la valeur de la somme
m
X
k=n
f(k).
Exercice 3 (questions indépendantes)
1. Écrire une fonctioncubes(n)qui prend en paramètre un entier naturelnet renvoie la liste desnpremiers cubes.
2. Écrire une fonctiondiv(n,b)qui prend en paramètres deux entiers naturelsnetbet qui renvoie la liste des entiers de0,n−1qui sont divisibles parb.
3. Écrire une fonctionaddition(L1,L2)qui prend en paramètres deux listesL1etL2de même taille et qui renvoie la listeL3obtenue par addition terme à terme des éléments deL1etL2et la longueur de la listeL3.
4. Écrire une fonctionmoyenne(L)qui prend en paramètre une liste Ld’entiers et qui renvoie la moyenne des éléments de la liste.
5. Écrire une fonctionretourne(L)qui prend en paramètre une listeLet qui renvoie la liste retournée. Par exemple, retourne([1,3,4,7,6])renvoie[6,7,4,3,1]
G. BOUTARD 1 Lycée GAY-LUSSAC
INFORMATIQUE DEVOIRNONSURVEILLÉ1
Problème : Mastermind
Déroulement du jeu
1. L’ordinateur choisi une chaîne de caractères secrètes de 4 lettres différentes.
2. L’ordinateur demande à l’utilisateur d’entrer une chaîne de 4 lettres et donne :
• le nombre de lettres apparaissant dans la chaîne secrète et à la bonne place.
• le nombre de lettres apparaissant dans la chaîne secrète et à la mauvaise place.
3. L’étape 2 est répétée jusqu’à ce que l’utilisateur trouve la chaîne secrète.
Règle du jeu
Les chaînes de caractères ne peuvent pas comporter deux fois la même lettre et sont composées des lettres : a, b, c, d, e, f, g, h.
Programmation
1. Combien peut-on écrire de chaînes de caractères de longueur 4 composées des lettres a, b, c, d, e, f, g, h, sans répétition ?
2. Compléter le code de la question 2 du fichierdns1.pypour écrire une fonctionvalide(essai)qui prend en paramètre une chaîne de caractèresessaiet renvoieTruesiessaiest une chaîne de caractères vérifiant la règle du jeu etFalsesinon.
3. Écrire une fonctionsaisie()qui demande à l’utilisateur d’entrer une chaîne de caractères et repose la question jusqu’à ce qu’une chaîne de caractères vérifiant la règle du jeu soit entrée. La chaîne de caractères entrée par l’utilisateur sera renvoyée par la fonction.
4. Dans cette question, on suppose que les chaînes de caractères respectent la règle du jeu. Il y est inutile de le vérifier dans la fonction.
Écrire une fonction bienPlace(chaine1,chaine2)qui prend en paramètres deux chaînes de caractères et renvoie le nombre de caractères situés à la même position danschaine1etchaine2.
5. Dans cette question, on suppoe que les chaînes de caractères respectent la règle du jeu. Il y est inutile de le vérifier dans la fonction.
Écrire une fonction malPlace(chaine1,chaine2)qui prend en paramètres deux chaînes de caractères et renvoie le nombre de caractères présents danschaine1etchaine2mais pas à la même position.
La fonctioncombinaisonAleatoire()données dans le scriptdns1.pypermet de choisir aléatoirement une chaîne de caractères respectant la règle du jeu.
6. Écrire une fonctionjeu()qui :
• crée un chaîne de caractèressecrete;
• appelle la fonctionsaisie()et affiche le nombre de caractères bien placés et le nombre de caractères mal placés dans la chaîne entrée par le joueur ;
• recommence l’étape précédente jusqu’à ce que l’utilisateur trouve la chaîne secrète.
7. Modifier une ou plusieurs des fonctions précédentes pour que quand le joueur écrit la chaîne de caractères
"quit", la fonctionjeu()affiche la chaînesecreteet s’arrête.
8. Modifier la fonctionjeu()pour limiter le nombre d’essais à 10. Si le joueur ne trouve pas après 10 essais, la chaînesecreteest affichée et la fonctionjeu()se termine.
PCSI 2021 – 2022 2 G. BOUTARD