Telechargé par dridi.issam.unv

DS n°02 - Fonctions, listes, chaînes de caractères

publicité
Samedi 22 Octobre 2022
Durée : 60 min
INFORMATIQUE
DEVOIR SURVEILLÉ N◦2
Si, au cours de l’épreuve, vous repérez ce qui vous semble être une erreur d’énoncé, d’une part vous
le signalez au surveillant, d’autre part vous le signalez sur votre copie et vous poursuivez la composition
en indiquant les raisons des initiatives que vous avez été amené à prendre.
L’usage de calculatrice, téléphone portable, ordinateur est interdit
AVERTISSEMENT
• Composer sur copies doubles grand carreaux uniquement.
• A la fin de chaque exercice on change de page (ou de copie) obligatoirement.
• La présentation, la lisibilité, l’orthographe, la qualité de la rédaction, la clarté et la précision
des raisonnements entreront pour une part importante dans l’appréciation des copies.
• En particulier, les résultats non encadrés et non-justifiés ne seront pas pris en compte.
Tournez la page S.V.P.
DEVOIR SURVEILLÉ N◦ 2
Lycée de l’Essouriau
Les Ulis
EXERCICE 1 - Bien faire sa « To Do List »
1. Qu’est-ce qui apparait dans la console lorsqu’on écrit [1,2,3,4,5,6,7,8,9][-3] ?
2. Qu’est-ce qui apparait dans la console lorsqu’on écrit [1,2,3,4,5,6,7,8,9][:4] ?
3. Si cela a du sens, donner les longueurs (au sens de la commande len) des expressions suivantes.
a) [1234567]
c) ["1234567"]
e) [k**2 for k in range(1,7)]
b) "abcdefg"
d) [1,2,3,4,5,6,7]
f) [[1,2,3],[4,5],6,7]
4. Créer la liste formée des 100 premiers entiers impairs par ordre décroissante.
EXERCICE 2 - Décode ce code
(D’après EPITA PSI-MP-PC 2020)
Soit L une liste, x une variable et la fonction aquoiquejesers ci-dessous.
1
2
3
4
5
def aquoiquejesers (L , x ):
i = len ( L ) -1
while i >=0 and L [ i ]!= x :
i =i -1
return i >=0
Que fait cette fonction ?
EXERCICE 3
Sum is the path to average, average is the path to variance
1. Écrire une fonction moyenne(L) qui renvoie la moyenne des éléments de la liste de flottants L.
2. En déduire une fonction variance(L) qui renvoie la variance V de la liste de flottants L.
Pour rappel, la formule mathématiques de la variance d’une liste de nombres (`1 , . . . , `n ) vaut
n
V =
1X
(`k − m)2
n
k=1
où m est la moyenne des éléments de la liste.
3. La liste L est maintenant une liste de flottants à 2 dimensions. Écrire une fonction moyenne_2D(L) qui
renvoie la moyenne des éléments des listes de L.
Par exemple moyenne_2D([[2,4],[1,3,5],[9]]) renvoie 2+4+1+3+5+9
= 4.
6
En C++, && signifie and et ! signifie not
Fabien DÉLEN [email protected]
2
PCSI 2022-2023
DEVOIR SURVEILLÉ N◦ 2
Lycée de l’Essouriau
Les Ulis
PROBLÈME - N’échouez pas sur la suite de Robinson
(Extrait Sujet E3A PSI 2018)
1. Proposer une fonction python maxi prenant en argument une liste d’entiers naturels L et renvoyant le
maximum des entiers de cette liste.
On n’utilisera pas la fonction max bien entendu.
2. On appelle ind une fonction prenant en argument une liste d’entiers naturels L et renvoyant la liste des
indices [i_1,...,i_r] avec i_1<...<i_r telle que pour tout k ∈ [[1, r]], L[i_k] soit non nul.
Par exemple si L = [0,1,3,0,7], alors ind(L) renvoie [1,2,4].
(a) Que renvoie la commande ind([4,0,0,1,2,0,4]) ?
(b) Écrire en python cette fonction ind.
3. On appelle nb_oc une fonction prenant comme argument une liste d’entiers naturels L et renvoyant la
liste T de longueur M = maxi(L)+1 où, pour tout i ∈ [[0, M ]], T[i] est le nombre d’occurrences de l’entier
i dans la liste L.
Par exemple, si L = [3,1,4,1,5], alors T = [0,2,0,1,1,1].
En effet l’entier « 0 » apparait 0 fois donc T [0] = 0, l’entier « 1 » apparait 2 fois donc T [1] = 2, etc.
(a) Que renvoie la commande nb_oc([4,0,0,1,2,0,4]) ?
(b) Écrire en python cette fonction nb_oc. (On pourra utiliser la fonction maxi.)
4. Soit L une liste d’entiers naturels.
(a) Déterminer le nombre de fois, noté n, où la liste L est parcourue lors de l’exécution de nb_oc(L).
(b) On veut que ce nombre n soit indépendant de M = maxi(L)+1. Si ce n’est pas le cas, modifier la
fonction nb_oc afin de respecter cette condition.
5. Soit A une liste d’entiers naturels. On définit la suite de Robinson (Ln )n∈N associée à la suite A par
récurrence comme suit :
— L0 = A.
— Si Ln est construite, alors :
— on détermine Tn = nb_oc(Ln ).
— on détermine In = ind(Tn ).
— si In = [i1 , . . . , ir ], alors Ln+1 = T [ir ], ir , . . . , T [i1 ], i1 .
Par exemple si A = [4, 4, 1, 2], alors :
— L0 = [4, 4, 1, 2]
— L1 = [2, 4, 1, 2, 1, 1]
(il y a deux « 4 », un « 2 » et un « 1 » dans la liste L0 )
— L2 = [1, 4, 2, 2, 3, 1]
(il y a un « 4 », deux « 2 » et trois « 1 » dans la liste L1 )
(a) On donne A = [2, 0, 4, 1, 3, 3, 2, 3, 1, 1]. Déterminer L3 et L2018 .
(b) On donne B = [2, 4, 1, 1, 1, 2]. Si l’on suppose que L1 = B, donner toutes les solutions possibles pour
L0 .
(c) On donne C = [2, 4, 1, 0]. Si l’on suppose que L1 = C, donner toutes les solutions possibles pour L0 .
(d) Proposer alors une fonction rob(A,n) qui prend en arguments une liste d’entiers naturels A et un
entier naturel n et qui renvoie l’élément Ln de la suite de Robinson associée à A.
Fabien DÉLEN [email protected]
3
PCSI 2022-2023
Téléchargement