Corrigé du bac blanc du 17 mars 2026⚓︎
Exercice 1⚓︎
-
Par exemple:
#a) dossard_pj = participants['PHILIPSEN Jasper'] #b) classement_pj = classement_general[dossard_pj] #c) dossard_tp = participants['PINOT Thibaut'] temps_tp = temps_etapes[dossard_tp][3] -
1 2 3 4 5
def calcul_temps_total(d): temps = 0 for t in temps_etapes[d]: temps += t return temps -
ligne 8 :
element[1] < classement[pos][1]ligne 9 :
classement[pos + 1] = classement[pos]ligne 14 :
classement_general[classement[i][0]] = i+1 -
ligne 16 :
difference_temps = ligne[2] - temps_premierligne 17 :
coureur.append(difference_temps)ligne 18 :
tableau_final.append(coureur) -
La clé primaire doit être unique pour chaque entrée. Dans la table Temps, on aura plusieurs fois le même numéro de dossard,
numDossardne peut donc pas jouer le rôle de clé primaire. Même chose pour l’attributnumEtape. En revanche, le couple(numDossard, numEtape)sera unique pour chaque entrée, c’est donc une clé primaire correcte. -
La requête renvoie tous les noms des coureurs de l’équipe Cofidis.
-
SELECT Date FROM Etapes WHERE Type = 'contre-la-montre' -
SELECT directeurSportif FROM Equipes JOIN Coureurs ON Coureurs.Equipe = Equipes.nomEquipe WHERE Coureurs.nomCoureur = 'BARDET Romain' -
La première requête fait appel à un attribut
numEtape = 5, alors que cette étape n’a pas encore été créée dans la table Etapes, ce qui va provoquer une erreur. -
Il suffit d’inverser l’ordre des requêtes.
-
SELECT SUM(tempsRéalisé) FROM Temps JOIN Coureurs ON Coureurs.numDossard = Temps.numDossard WHERE Coureurs.nomCoureur = 'BARDET Romain'
Exercice 2⚓︎
- Un masque sur 16 bits s'écrit
255.255.0.0en notation décimale pointée. - L'adresse du réseau L2 est
172.16.0.0. - L'adresse de diffusion de L2 est
172.16.255.255. - Il y a \(2^{16}-2=65534\) adresses possibles.
- S1 -> A -> H -> D -> S2
- S1 -> A-> H -> C -> D -> S2 ou S1 -> A -> B -> C -> D -> S2
-
Pour AHCD:
Routeur Réseau destinataire Passerelle Interface H L2 53.10.10.1053.10.10.9Pour ABCD:
Routeur Réseau destinataire Passerelle Interface A L2 195.55.24.1193.55.24.2 -
Pour 100 Mbit/s = \(10^8\) bit/s le coût est de 10.
Pour 1 Gbit/s = \(10^9\) bit/s le coût est de 1.
Pour 10 Gbit/s = \(10^{10}\) bit/s le coût est de 0,1.
-
S1 -> A -> G -> F -> E -> D -> S2 avec un coût = 1 + 0,1 + 0,1 + 0,1 = 1,3
-
S1 -> A -> H -> F -> E -> D -> S2 avec un coût = 1 + 1 + 0,1 + 0,1 = 2,2
Exercice 3⚓︎
- 010
- Le texte est «espion».
- Il s'agit d'un parcours en largeur.
- La somme des nombres d'occurences à gauche est 1 + 1 + 1 + 1 + 1 + 1 + 1 + 2 + 2 = 11 et celle à droite est 3 + 4 + 4 = 11. Comme elles sont égales, il n'y apas de meilleurs séparation possible.
- La hauteur de l'arbre est 5.
-
Le texte comporte 22 caractères, donc le codage ASCII nécessite 22 octets, soit \(22\times 8 = 176\) bits.
Avec le codage se Shannon-Fano:
Caractère Code Longueur du code (en bits) Nombre d'occurences i 1111 4 1 u 1110 4 1 c 1101 4 1 o 11001 5 1 d 11000 5 1 , 1011 4 1 p 1010 4 1 n 1001 4 2 j 1000 4 2 s 011 3 3 _ 010 3 4 e 00 2 4 En multipliant les longueurs par leur nombre d'occurences, on obtient un total de 75 bits. On a donc bien un gain d'environ 2 fois moins (2,35 en fait).
-
Ligne 8 :
dico[symbole] = dico[symbole] + 1Ligne 10 :
dico[symbole] = 1 -
1 2 3 4 5
def somme_occ(tab): s = 0 for elt in tab: s += elt[1] return s -
Ligne 8 :
tab1 = [tab[k] for k in range(0, i)]Ligne 9 :
tab2 = [tab[k] for k in range(i, len(tab))] -
Ligne 9 :
return "1" + shannon(symbole, t1)Ligne 11 :
return "0" + shannon(symbole, t2) -
Grâce au cas d'arrêt ligne 4, les appels récursifs s’arrêtent quand
tabcontient un seul caractère. -
1 2 3 4 5 6 7 8 9 10
def encode_shannon(texte): dico = creer_dico_occ(texte) tab = creer_tab_trie(dico) dico_shannon = {} for symbole in dico: dico_shannon[symbole] = shannon(symbole, tab) code = '' for caractere in texte: code = code + dico_shannon[caractere] return code
