Corrigé NSI Métropole 2026 – Jour 1
Ce corrigé reprend l’intégralité du sujet de spécialité NSI Métropole, Réunion et Mayotte 2026 jour 1. Les trois exercices sont expliqués pas à pas : réseaux et routage, jeu Recto-Verso, graphes, récursivité, arbres de débat, programmation objet et requêtes SQL.
Résumé du sujet et notions évaluées
Le sujet est très équilibré : il commence par un exercice concret de réseau, poursuit avec une modélisation de jeu par bits et graphe, puis termine par une plateforme de débat modélisée avec des arbres et une base relationnelle. Il vérifie donc à la fois des connaissances de cours, des calculs, de la lecture de schémas, de l’algorithmique et de la programmation Python.
Analyse du sujet : ce qui est vraiment attendu
Le correcteur attend des réponses précises, mais aussi des explications. En NSI, une réponse de code sans justification peut être insuffisante si la question demande de “justifier”, “expliquer” ou “interpréter”. Il faut donc penser à écrire une phrase qui relie le résultat au contexte.
Les difficultés principales sont les suivantes : ne pas confondre adresse de réseau, adresse utilisable et passerelle ; comprendre que le XOR retourne un jeton lorsqu’on l’applique avec 1 ; comparer le coût mémoire d’un dictionnaire et d’une matrice d’adjacence ; savoir qu’un parcours en largeur donne un plus court chemin en nombre d’arêtes ; et maintenir l’intégrité référentielle dans les requêtes SQL de suppression.
Exercice 1 – Réseaux, routage et sécurisation des communications
L’exercice porte sur un réseau de lycée composé de plusieurs sites, chacun associé à un sous-réseau. Il faut d’abord vérifier une configuration IP, puis analyser un routage dynamique, avant de conclure sur la sécurisation des échanges.
1. Conversion en binaire de l’adresse IP et du masque
On convertit chaque octet séparément sur 8 bits.
| Élément | Conversion |
|---|---|
| Adresse IP 172.16.32.15 | 10101100.00010000.00100000.00001111 |
| Masque 255.255.240.0 | 11111111.11111111.11110000.00000000 |
2. Nombre d’hôtes et adresses utilisables du site3
Le site3 est dans le réseau 172.16.32.0/20. Un préfixe /20 laisse 12 bits pour la partie machine, car 32 – 20 = 12.
Nombre total d’adresses : 212 = 4096. On retire l’adresse réseau et l’adresse de diffusion : 4094 hôtes utilisables.
3. Paramètre mal configuré
L’hôte peut communiquer avec le site3, mais pas avec Internet. Le test vers 172.16.47.254 réussit : cette adresse correspond à la bonne passerelle du réseau site3, puisqu’elle est la dernière adresse utilisable du sous-réseau.
Dans le fichier, la passerelle indiquée est pourtant 172.16.48.254, qui appartient au sous-réseau suivant, celui du site4.
4. Adresses du lien R2-R4 en 192.168.0.8/30
Un réseau /30 laisse 2 bits pour les machines, donc 4 adresses au total : adresse réseau, deux adresses utilisables et adresse de diffusion.
Pour 192.168.0.8/30 : adresse réseau = 192.168.0.8, diffusion = 192.168.0.11.
5. Chemin observé avec traceroute et coût RIP
La commande indique les routeurs traversés depuis le site3 : R2, puis R3, puis R4, puis R5, avant la sortie vers Internet.
6. Dysfonctionnement du réseau
Le réseau contient un lien direct entre R2 et R4. Un chemin plus court existe donc : R2 → R4 → R5, de coût RIP 2. Or le chemin observé a un coût 3.
7. Débit et coût d’une liaison
Le débit mesure la quantité de données transmises par seconde. On cherche donc à le maximiser. Le coût, dans OSPF, représente une pénalité de passage par une liaison : on cherche donc à le minimiser.
8. Chemin OSPF depuis le site4 vers Internet
Les coûts sont calculés avec la formule coût = 108 / débit.
| Liaison | Débit | Coût |
|---|---|---|
| Ethernet | 10 Mbits/s | 10 |
| Fast Ethernet | 100 Mbits/s | 1 |
| Fibre optique | 4 Gbits/s | 0,025 |
Depuis le site4, le routeur d’entrée est R2. Le meilleur chemin vers R5 est :
R2 → R1 → R3 → R4 → R5
Coût total : 1 + 0,025 + 0,025 + 0,025 = 1,075.
9. Chiffrement symétrique ou asymétrique ?
Alice et Bob doivent préférer le chiffrement asymétrique pour initialiser un échange sécurisé. En effet, avec un chiffrement symétrique, les deux interlocuteurs doivent partager une même clé secrète. Si cette clé est échangée sur un réseau déjà compromis, le pirate peut l’intercepter.
10. Pourquoi HTTPS est plus sécurisé que HTTP
HTTP transmet les données en clair. Un pirate placé sur le réseau peut donc lire ou modifier les informations échangées. HTTPS ajoute une couche de sécurité grâce au protocole TLS : les échanges sont chiffrés, l’intégrité est vérifiée et le serveur peut être authentifié par certificat.
Exercice 2 – Jeu Recto-Verso, binaire, graphes et récursivité
Le jeu est modélisé par 9 bits : chaque jeton peut être Recto, donc 1, ou Verso, donc 0. Les coups sont représentés par des listes de bits et appliqués avec l’opérateur XOR.
1. Nombre total de configurations
Il y a 9 jetons. Chaque jeton possède 2 états possibles : Recto ou Verso. Les choix sont indépendants.
2. Séquence ligne 1, ligne 2, colonne 2
La figure 1 se lit, ligne par ligne : [0, 0, 1, 0, 0, 1, 1, 1, 0]. Après les trois coups :
- ligne 1 : [1, 1, 0, 0, 0, 1, 1, 1, 0] ;
- ligne 2 : [1, 1, 0, 1, 1, 0, 1, 1, 0] ;
- colonne 2 : [1, 0, 0, 1, 0, 0, 1, 0, 0].
3. Entier représentant la configuration de la figure 1
La configuration de la figure 1 est 001001110 en binaire.
Calcul : 0×28 + 0×27 + 1×26 + 0×25 + 0×24 + 1×23 + 1×22 + 1×21 + 0×20.
Donc : 64 + 8 + 4 + 2 = 78.
4. Fonction representant
On lit les bits de gauche à droite. À chaque nouveau bit, on décale l’entier déjà construit d’un rang binaire, puis on ajoute le bit.
def representant(bits):
total = 0
for bit in bits:
total = 2 * total + bit
return total
5. Fonction xor_etendu
On applique le XOR élément par élément sur deux listes de même longueur.
def xor_etendu(l_x, l_y):
resultat = []
for i in range(len(l_x)):
resultat.append(xor(l_x[i], l_y[i]))
return resultat
6. Fonction configurations_suivantes
On convertit la configuration entière en liste de bits, puis on applique chaque masque de coup possible. Chaque configuration obtenue est reconvertie en entier.
def configurations_suivantes(config):
config_bin = binaire(config)
voisins = []
for coup in coups_possibles:
masque = coups_possibles[coup]
config_suivante = xor_etendu(config_bin, masque)
voisins.append(representant(config_suivante))
return voisins
7. Pourquoi l’arête réciproque existe
Si l’on passe de x à y en appliquant un coup, cela signifie que y = x ⊕ masque. Or appliquer deux fois le même XOR revient à annuler l’opération : un jeton retourné deux fois revient dans son état initial.
8. Dictionnaire ou matrice d’adjacence ?
Il y a 29 configurations, donc 512 sommets. Dans une matrice d’adjacence, il faudrait stocker 29 × 29 = 218 valeurs.
Avec un dictionnaire de successeurs, chaque configuration possède seulement 8 voisins, car il y a 8 coups possibles. On stocke donc environ 8 × 29 entiers pour les voisins, ou 9 × 29 si l’on compte aussi les clés du dictionnaire.
9. Fonction parcours_profondeur
Un parcours en profondeur marque le sommet courant comme vu, puis explore récursivement ses voisins non encore visités.
def parcours_profondeur(graphe, configuration, vus):
vus.append(configuration)
for s in graphe[configuration]:
if s not in vus:
parcours_profondeur(graphe, s, vus)
10. Vérifier que la configuration 4 est perdante
La configuration gagnante est celle où tous les bits valent 1, soit 111111111 en binaire, c’est-à-dire 29 – 1 = 511.
vus = []
parcours_profondeur(graphe, 4, vus)
if 511 not in vus:
print("La configuration 4 est perdante")
else:
print("La configuration 4 est gagnante")
11. Parcours le plus adapté pour obtenir un minimum de coups
Le graphe n’est pas pondéré : chaque arête correspond à un coup. Pour trouver un chemin avec un nombre minimal de coups, il faut explorer les sommets par distance croissante depuis le départ.
Exercice 3 – Arbres, programmation objet et bases de données
La plateforme de débats organise les contributions sous forme d’arbre : chaque affirmation peut recevoir plusieurs arguments pour ou contre. La seconde partie modélise ensuite les utilisateurs, affirmations et réactions dans une base de données relationnelle.
1. Nom du nœud de départ
Dans le vocabulaire des arbres, le nœud de départ, placé tout en haut de la structure, s’appelle la racine.
2. L’arbre de débat est-il binaire ?
Un arbre binaire est un arbre dans lequel chaque nœud possède au maximum deux enfants. Ici, une affirmation peut recevoir plusieurs arguments directs : plusieurs pour et plusieurs contre.
3. Attributs de la classe Affirmation
| Attribut | Type | Rôle |
|---|---|---|
| contenu | str | texte de l’affirmation |
| sorte | str | « sujet », « pour », « contre » ou chaîne vide avant insertion |
| arguments | list | liste d’objets Affirmation rattachés |
| nb_likes | int | nombre de likes |
| nb_dislikes | int | nombre de dislikes |
4. Méthode soutenir
L’argument ne doit pas déjà appartenir à un autre arbre ou à une autre position. On vérifie donc que sa sorte est encore vide.
def soutenir(self, argument):
assert argument.sorte == ""
self.arguments.append(argument)
argument.sorte = "pour"
5. Méthode nb_contre
Il faut compter seulement les arguments directement rattachés à l’affirmation courante et dont la sorte vaut « contre ».
def nb_contre(self):
compteur = 0
for arg in self.arguments:
if arg.sorte == "contre":
compteur = compteur + 1
return compteur
6. Interprétation de la méthode mystere
La méthode commence par calculer le nombre d’arguments contre directement rattachés à l’affirmation courante. Puis elle parcourt récursivement tous les arguments descendants et conserve la plus grande valeur trouvée.
7. Méthode evaluation
On part du score propre de l’affirmation : likes – dislikes. Puis on ajoute l’évaluation des arguments pour et on retire l’évaluation des arguments contre.
def evaluation(self):
total = self.nb_likes - self.nb_dislikes
for arg in self.arguments:
if arg.sorte == "pour":
total = total + arg.evaluation()
if arg.sorte == "contre":
total = total - arg.evaluation()
return total
Partie B – Correction des questions SQL
8. Rôles d’un SGBD
Un SGBD sert à gérer une base de données : il sécurise l’accès, conserve les données et permet l’accès simultané de plusieurs utilisateurs.
9. Autre clé primaire possible pour utilisateur
La table utilisateur utilise le pseudo comme clé primaire. L’attribut email pourrait aussi servir de clé primaire si l’on impose qu’une adresse e-mail ne puisse appartenir qu’à un seul utilisateur.
10. Nombre d’affirmations ayant au moins 50 likes
SELECT COUNT(*)
FROM affirmation
WHERE nb_likes >= 50;
11. Contenus des sujets créés par Pierre Durand
Il faut joindre affirmation et utilisateur, puis filtrer sur le prénom, le nom et le fait que l’affirmation soit un sujet.
SELECT affirmation.contenu, affirmation.nb_likes
FROM affirmation JOIN utilisateur
ON affirmation.auteur = utilisateur.pseudo
WHERE utilisateur.prenom = 'Pierre'
AND utilisateur.nom = 'Durand'
AND affirmation.sorte = 'sujet';
12. Interprétation de la requête avec auto-jointure
La requête joint la table affirmation avec elle-même : une première fois pour l’affirmation attaquée, une seconde fois pour sa réponse.
13. Ajouter un like de l’utilisateur i<3descartes
Il faut insérer une réaction, puis incrémenter le compteur de likes de l’affirmation concernée.
INSERT INTO reaction
VALUES (108, 'i<3descartes', 'like');
UPDATE affirmation
SET nb_likes = nb_likes + 1
WHERE id_aff = 108;
14. Pourquoi supprimer les réactions avant l’utilisateur ?
La table reaction contient une clé étrangère vers la table utilisateur. Si l’on supprimait l’utilisateur avant ses réactions, il resterait des réactions faisant référence à un utilisateur qui n’existe plus.
15. Requêtes pour le droit à l’effacement de i<3rgpd
La procédure demandée impose trois étapes : anonymiser les affirmations, supprimer les réactions, puis supprimer le compte utilisateur.
UPDATE affirmation
SET auteur = NULL
WHERE auteur = 'i<3rgpd';
DELETE FROM reaction
WHERE utilisateur = 'i<3rgpd';
DELETE FROM utilisateur
WHERE pseudo = 'i<3rgpd';
Méthode pour réussir ce type de sujet NSI
Erreurs fréquentes à éviter
| Erreur | Pourquoi elle coûte des points | Correction attendue |
|---|---|---|
| Confondre 172.16.47.254 et 172.16.48.254 | La première appartient au site3, la seconde au site4. | La passerelle du site3 est 172.16.47.254. |
| Dire que RIP choisit le meilleur débit | RIP ne regarde pas le débit, mais le nombre de sauts. | OSPF utilise les coûts liés aux débits. |
| Oublier les clés dans la comparaison dictionnaire / matrice | Il faut raisonner en ordre de grandeur mémoire. | Matrice : 218, dictionnaire : environ 8×29 voisins. |
| Supprimer l’utilisateur avant ses réactions | Cela viole l’intégrité référentielle. | Anonymiser, supprimer les réactions, supprimer l’utilisateur. |
Télécharger le sujet officiel de NSI
Le sujet officiel NSI Métropole, Réunion et Mayotte 2026 jour 1 est accessible ci-dessous. Le corrigé détaillé est intégré directement dans cette page.
| Document | Accès |
|---|---|
| Sujet officiel NSI Métropole Réunion Mayotte 2026 – Jour 1 | SUJET PDF |
| Corrigé complet | CORRIGÉ DANS LA PAGE |
FAQ – Corrigé NSI Métropole 2026 jour 1
Le sujet est-il difficile ?
Il est complet, mais classique. Les difficultés viennent surtout du soin à apporter aux justifications : calculs d’adresses, choix du chemin OSPF, raisonnement sur les graphes et intégrité référentielle en SQL.
Quelle est la bonne passerelle du site3 ?
La bonne passerelle est 172.16.47.254, car c’est la dernière adresse IP utilisable du sous-réseau 172.16.32.0/20.
Quel est le coût OSPF du meilleur chemin depuis site4 ?
Depuis R2, le meilleur chemin vers R5 est R2 → R1 → R3 → R4 → R5, pour un coût total de 1,075.
Pourquoi le parcours en largeur est-il préférable pour le minimum de coups ?
Parce qu’il explore le graphe par distance croissante. Dans un graphe non pondéré, il garantit de trouver un chemin avec le nombre minimal d’arêtes.
Quels chapitres réviser après ce sujet ?
Il faut réviser les protocoles de routage, le chiffrement et HTTPS, les graphes, la récursivité, les arbres, la programmation objet et les requêtes SQL.