Documente Academic
Documente Profesional
Documente Cultură
Les candidats sont informés que la précision des raisonnements algorithmiques ainsi que le soin
apporté à la rédaction et à la présentation des copies seront des éléments pris en compte dans la notation. Il
convient en particulier de rappeler avec précision les références des questions abordées. Si, au cours de
l'épreuve, un candidat repère ce qui peut lui sembler être une erreur d'énoncé, il le signale sur sa copie et
poursuit sa composition en expliquant les raisons des initiatives qu'il est amené à prendre.
Remarques générales :
Cette épreuve est composée d’un exercice et de deux parties tous indépendants ;
Toutes les instructions et les fonctions demandées seront écrites en Python ;
Les questions non traitées peuvent être admises pour aborder les questions ultérieures ;
Toute fonction peut être décomposée, si nécessaire, en plusieurs fonctions.
≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
Exercice : (4 points)
Médian d’une liste de nombres
0.5 pt Q 3- Écrire la fonction petits(L,x) qui reçoit en paramètres une liste de nombres L, et un
élément x de L. La fonction renvoie le nombre d’éléments de L qui sont inférieurs strictement à x.
1 pt Q 4- Écrire la fonction median(L) qui reçoit en paramètre une liste de nombres L non vide, et qui
renvoie un élément médian de la liste L.
Partie I :
Bases de données et langage SQL
Dans les réseaux sociaux, on peut créer des groupes, et d’inviter des personnes à ces groupes. Dans
le but de faire des statistiques sur les groupes et leurs membres, nous avons créé une base de données
relationnelle composée de trois tables : Personnes, Membres et Groupes.
Page 2 sur 12
Épreuve d’Informatique – Session 2019 – Filière MP
I. 1- Déterminer les clés primaires et les clés étrangères dans les tables de cette base de données. Justifier
votre réponse.
Écrire, en langage SQL, les requêtes qui donnent les résultats suivants :
I. 2- Les personnes qui sont nées le mois 6, triées dans l’ordre croissant des âges (du moins âgée au plus
âgée).
I. 3- Les identifiants des groupes, les dates de création des groupes et les noms et prénoms des personnes
ayant crée ces groupes.
I. 5- Les noms et les descriptions des groupes qui contiennent au moins 1000 personnes, triés dans l’ordre
décroissant des nombres de personnes.
I. 6- Les codes, les noms et les prénoms de toutes les personnes (créateur et membres) qui appartiennent
au groupe ayant le nom : 'Sport'.
I. 8- Modifier dans la table 'Membres', pour que tous les membres du groupe ayant le nom ‘Sport’
deviennent membres du groupe ayant le nom ‘Voyage’.
Page 3 sur 12
Épreuve d’Informatique – Session 2019 – Filière MP
Partie II :
Grille binaire
Une grille binaire de n lignes et p colonnes, est une grille dans laquelle chaque case est de couleur
blanche, ou bien de couleur noire.
Exemple :
0 1 2 3 4 5 6 7 8 9 10 11
0
1
2
3
4
5
6
7
8
9
Exemple :
La grille binaire de la figure 1 est représentée par la matrice G de 10 lignes et 12 colonnes, suivante :
Page 4 sur 12
Épreuve d’Informatique – Session 2019 – Filière MP
Une grille binaire carrée est une grille binaire dans laquelle le nombre de lignes et le nombre de colonnes
sont égaux.
Exemple : Grille binaire carrée d’ordre 10 (10 lignes et 10 colonnes).
Dans cette section (II. 1), on suppose que le module numpy est importé :
from numpy import *
On suppose que la matrice carrée G, qui représente la grille binaire carrée, est créée par la méthode
array( ) du module numpy.
Exemple :
La grille binaire carrée d’ordre 10 est représentée par la matrice carrée G suivante :
G = array ([[1,1,1,1,0,0,1,1,1,1] ,
[1,1,1,0,0,1,1,0,1,1] ,
[1,1,0,0,1,1,0,0,1,1] ,
[1,1,1,0,0,0,0,1,1,1] ,
[1,0,1,1,1,0,1,1,1,1] ,
[1,0,0,1,1,1,0,1,1,0] ,
[1,1,0,1,1,0,1,0,0,0] ,
[1,0,1,0,0,1,1,0,0,1] ,
[1,0,0,0,1,1,1,0,1,1] ,
[1,1,1,0,0,1,1,1,1,1] ] , float)
Dans le but de calculer le déterminant d’une matrice carrée G qui représente une grille binaire carrée, on
propose d’utiliser la méthode du ‘pivot de Gauss’, dont le principe est le suivant :
Page 5 sur 12
Épreuve d’Informatique – Session 2019 – Filière MP
Q 1. a- Écrire la fonction copie_matrice(G), qui reçoit en paramètre une matrice carrée G qui
représente une grille binaire carrée, et qui renvoie une matrice C copie de la matrice G.
Q 1. c- Écrire la fonction triangulaire(C), qui reçoit en paramètre une matrice carrée C qui
représente une grille binaire carrée. En utilisant la méthode du Pivot de Gauss, la fonction transforme la
matrice C en matrice triangulaire inférieure ou bien triangulaire supérieure, tout en comptant le nombre
de fois qu’il y a eu échange de lignes dans la matrice C. La fonction doit retourner le nombre d’échanges
de lignes.
Exemple :
Après l’appel de la fonction triangulaire(C), on obtient la matrice triangulaire supérieure suivante :
Q 1. d- Écrire la fonction deteminant(G), qui reçoit en paramètre une matrice G qui représente une
grille binaire carrée. En utilisant la méthode du pivot de Gauss, la fonction renvoie la valeur du
déterminant de G,
Exemple :
La fonction determinant (G) renvoie : -4
Pour plus de clarté, tous les exemples qui suivront, seront appliqués sur la grille binaire de la figure 1.
Page 6 sur 12
Épreuve d’Informatique – Session 2019 – Filière MP
Exemple :
La grille binaire de la figure 1 est représentée par la liste G suivante, composée de 10 listes, de taille 12
chacune :
G =[ [1,1,1,1,0,0,1,1,1,1,1,1] ,[1,1,1,0,0,1,1,0,1,1,1,1] ,
[1,1,0,0,1,1,0,0,1,1,1,1] ,[1,1,1,0,0,0,0,1,1,1,1,1] ,
[1,0,1,1,1,0,1,1,1,1,1,1] ,[1,0,0,1,1,1,0,1,1,0,0,0] ,
[1,1,0,1,1,1,0,0,0,0,1,0] ,[1,0,1,0,0,1,1,0,0,1,1,1] ,
[1,0,0,0,1,1,1,0,1,1,1,1] ,[1,1,1,0,0,1,1,1,1,1,1,1]
]
G[i][j] est l’élément qui se trouve à la ième ligne et la jème colonne dans G.
Exemples :
• G[0][3] est l’élément 1
• G[1][4] est l’élément 0.
Page 7 sur 12
Épreuve d’Informatique – Session 2019 – Filière MP
Exemples :
• Les cases a et b sont voisines ;
• Les cases b et c sont voisines ;
• Les cases b et d sont voisines ;
• Les cases b et e ne sont pas voisines, (b et e n’ont pas la même couleur) ;
• Les cases a et c ne sont pas voisines, (a et c n’ont aucun côté en commun) ;
• Les cases a et a ne sont pas voisines (a et a n’ont pas un seul côté en commun).
Exemples :
• L = [ (0, 3), (0, 2), (0, 1), (0, 0), (1, 0), (2, 0), (3, 0), (3, 1), (3, 2), (4, 2), (4, 3), (4, 4) ]
La liste L est un chemin dans la grille G.
• T = [ (0, 0), (1, 1), (2, 1), (2, 2), (1, 2), (1, 1) ].
La liste T n’est pas un chemin dans la grille G.
Page 8 sur 12
Épreuve d’Informatique – Session 2019 – Filière MP
Q 6- Écrire la fonction chemin(L,G), qui reçoit en paramètres une liste L de tuples représentant des
cases dans la grille binaire G. La fonction renvoie True si la liste L est un chemin dans G, sinon, la
fonction renvoie False.
La suite des cases voisines : (2, 1), (2, 2), (2, 3), …, (2, 8), sera remplacée par : (2, 1), (2, 8)
La suite des cases voisines : (2, 8), (2, 7), (2, 6), …, (2, 1), sera remplacée par : (2, 8), (2, 1).
• Cas d’une suite d’au moins 3 cases voisines, qui se trouvent sur la même colonne :
La suite des cases : (3, 5), (4, 5), (5, 5), …, (8, 5), sera remplacée par : (3, 5), (8, 5) ;
La suite des cases : (8, 5), (7, 5), (6, 5), …, (3, 5), sera remplacée par : (8, 5), (3, 5).
Page 9 sur 12
Épreuve d’Informatique – Session 2019 – Filière MP
Q 7- Écrire la fonction compresse_chemin(L), qui reçoit en paramètre une liste L qui contient un
chemin dans une grille binaire. La fonction renvoie la liste qui contient le chemin compressé de L.
Exemples :
• L = [ (0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0), (7, 0), (8, 0), (9, 0), (9, 1), (9, 2) ]
La fonction compresse_chemin(L) renvoie la liste : [ (0, 0), (9, 0), (9, 2) ]
• L = [ (0, 0), (1, 0), (1, 1), (2, 1), (2, 0), (3, 0) ]
La fonction compresse_chemin(L) renvoie la liste : [ (0, 0), (1, 0), (1, 1), (2, 1), (2, 0), (3, 0) ]
Exemple :
Les chemins suivants sont des chemins compressés entre les cases a = (0, 3) et b = (4, 4) :
• [ (0, 3), (0, 2), (1, 2), (1, 1), (0, 1), (0, 0), (3, 0), (3, 2), (4, 2), (4, 3), (6, 3), (6, 4), (4, 4) ]
• [ (0, 3), (0, 2), (1, 2), (1, 1), (3, 1), (3, 2), (4, 2), (4, 4) ]
• [ (0, 3), (0, 2), (1, 2), (1, 1), (2, 1), (2, 0), (3, 0), (3, 2), (4, 2), (4, 4) ]
• [ (0, 3), (0, 0), (1, 0), (1, 1), (3, 1), (3, 2), (4, 2), (4, 3), (6, 3), (6, 4), (4, 4) ]
• …
Page 10 sur 12
Épreuve d’Informatique – Session 2019 – Filière MP
Exemple :
On considère la liste R suivante, qui contient 3 chemins compressés dans la grille binaire G.
R = [ [ (0, 3), (0, 0), (3, 0), (3, 2), (4, 2), (4, 4) ] , [ (0, 3), (0, 2), (1, 2), (1, 1), (3, 1), (3, 2), (4, 2), (4, 4) ] , [
(0, 3), (0, 1), (3, 1), (3, 2), (4, 2), (4, 4) ] ]
[ [ (0, 3), (0, 2), (1, 2), (1, 1), (3, 1), (3, 2), (4, 2), (4, 4) ] , [ (0, 3), (0, 1), (3, 1), (3, 2), (4, 2), (4, 4) ] , [ (0,
3), (0, 0), (3, 0), (3, 2), (4, 2), (4, 4) ] ]
Page 11 sur 12
Épreuve d’Informatique – Session 2019 – Filière MP
Q 12- Écrire la fonction plus_court_chemins(G,a,b), qui renvoie la liste de tous les plus courts
chemins compressés entre deux cases a et b.
Exemples :
• La fonction plus_court_chemins ((0, 3), (4, 4), G) renvoie la liste des deux chemins suivants :
[ [(0, 3), (0, 2), (1, 2), (1, 1), (3, 1), (3, 2), (4, 2), (4, 4)] , [(0, 3), (0, 1), (3, 1), (3, 2), (4, 2), (4, 4)] ]
• La zone de la case (7, 2) est l’ensemble composé d’une seule cases : (7, 2)
Q 13-Écrire la fonction compte_zones(G), qui reçoit en paramètre une grille binaire G, et qui renvoie
le nombre de zones dans la grille binaire G.
Exemple :
La fonction compte_zone (G) renvoie le nombre : 10
Page 12 sur 12