Stages de Pré-Rentrée — Inscriptions ouvertes, places très limitées ! S'inscrire

Aller au contenu principal
Annale · 2023★★★Niveau moyenSession du 20 avril 2023

Info B X-ENS MP 2023, sujet, corrigé et rapport jury

Sujet Python de 2h. Moyenne 10.4, σ=3.3. Sujet, corrigé Hadamard et synthèse rapport jury.

Mohamed K.

Mohamed K.

Centralien · MPSI puis MP · Recherche ML santé

Top piège du sujet

Style récursif au lieu d'impératif, majoritairement échoué

Statistiques jury

Comment les candidats s'en sont sortis

Notes brutes officielles publiées par le jury — non harmonisées.

Moyenne

10.40

Médiane

10.4

Écart-type

3.30

Q1 (25%)

8.2

Q3 (75%)

12.6

Candidats présents

Comparaison

Comment ce sujet se compare aux autres

Moyenne en hausse de +1.04 par rapport à 2022 (10.4 vs 9.36). Écart-type plus resserré (σ 3.72 → 3.3), notes moins dispersées. Sujet plus accessible que la session précédente.

Calculateur

Où je me situe sur ce sujet ?

Entrez votre note brute. Le percentile et la position se mettent à jour en temps réel.

Analyse

Ce qu'a observé le jury

Synthèse Hadamard du rapport officiel — citations, chiffres et conseils du jury.

Présentation du sujet

Sujet Python de 2h. Structure de données 'texte' = liste de caractères. Partie I : différentiels par positions fixes (textes de même taille), comparaison, dictionnaires de différences, application/retrait de différences, historique. Partie II/III : distance de Levenshtein (édition), programmation dynamique en matrice (n+1)×(m+1), reconstruction du chemin optimal, modélisation comme plus court chemin, Dijkstra avec file de priorité.

Structure de l'épreuve

  1. Partie IPartie I, Différentiels par positions fixes (textes de même taille)(Q1-Q9)Niveau attendu

    Test d'égalité (Q1), comparaison caractère par caractère (Q2), dictionnaire de différences (Q3), construction de tranches modifiées (Q4-Q5), application sans modification en place (Q5-Q6), historique avec append/pop (Q7). Q1-Q9 : 88-100 % de copies, moyennes 0.64-0.93/1.

  2. Partie IIPartie II, Distance d'édition (Levenshtein) en programmation dynamique(Q10-Q13)Difficile

    Matrice de coûts (n+1)×(m+1), erreur fréquente de travailler sur n×m. Q9 : récurrence à 3 cas. Q11 : reconstruction du chemin en partant de (n+1, m+1) et remontant, pas de (0,0). Q10 : 74,8 % traitée, moyenne 0,57.

  3. Partie IIIPartie III, Modélisation graphe et plus court chemin (Dijkstra)(Q14-Q17)Très difficile

    Caractérisation des sommets visités par Dijkstra. Pondérations des arcs : coût d'édition = 1, M ne sert pas. Files de priorité avec ajoute() et extraire_min(), log à inclure dans la complexité. Q13-Q17 : 2,5-25 % traitée, peu réussies (moyennes 0,15-0,55).

Analyse globale du jury

« Sujet Python obligatoire sur la gestion de versions de grands textes. Note moyenne des candidats français admissibles : 10,40/20, écart-type 3,30. En grande majorité, la syntaxe Python est maîtrisée. Toutes les questions se résolvaient en style impératif (boucles for, quelques while), les candidats utilisant un style récursif ont majoritairement échoué. Lisibilité importante : noms de variables aidant le lecteur. Cas de base inutiles (texte vide) à éviter. Dépassements de bornes fréquents : while texte1[i] == texte2[i] and i < len(texte1), la comparaison est exécutée avant la vérification de la borne. Utiliser les fonctions début(tr), avant(tr) et non les indices. »

Top pièges sanctionnés

  • Style récursif au lieu d'impératif, majoritairement échoué-2 pts

    « Toutes les questions de ce sujet se résolvaient naturellement avec des fonctions écrites en style impératif : boucles for, quelques boucles while. Les candidats qui ont tenté d'utiliser un style récursif pour certaines questions ont majoritairement échoué. »

  • Dépassement de bornes : comparaison avant test d'index dans while-2 pts

    « Il faut veiller aux dépassements de bornes de listes. Attention, dans while texte1[i] == texte2[i] and i < len(texte1) : il y a un dépassement puisque la comparaison texte1[i] == texte2[i] est exécutée avant d'avoir vérifié la borne. »

  • Modifier le texte en place au lieu de le recopier (Q5)-2 pts

    « La fonction ne doit pas modifier le texte en place, mais le recopier. Attention, l'instruction texte2 = texte1 ne recopie pas le texte1. »

  • Complexité O(len(texte1)*len(diff)) au lieu de O(len(texte1)) (Q5)-2 pts

    « Certains candidats donnent une complexité en O(len(texte1)*len(diff)). Il faut remarquer que, même s'il y a deux boucles imbriquées, le nombre total de passages dans la boucle la plus interne est bien O(len(texte1)). »

  • Récurrence Levenshtein incorrecte M[i+1][j+1] = M[i+1][j] + M[i][j+1] - M[i][j] (Q9)-3 pts

    « La solution proposée par plusieurs copies 'quand texte1[i] != texte2[i], M[i+1][j+1] = M[i+1][j] + M[i][j+1] - M[i][j]' est fausse. Contre exemple : texte1 = ['e', ' ', 'c', 'h', 'a', 't'], texte2 = ['h', 'i', 'e'], cette approche donne 3, la bonne réponse est 5. »

Contexte

L'épreuve en quelques chiffres

L'épreuve Info B X-ENS MP 2023 s'est déroulée en 2h, coefficient 4 à l'admissibilité Polytechnique. Sujet commun aux filières MP et MPI, parfois avec quelques questions optionnelles spécifiques.
Le sujet 2023 traitait de : Sujet Python de 2h.
La moyenne brute s'est établie à 10.4/20, écart-type 3.3 sur 0 candidats. Note jury : Moyenne 10,40/20 (σ=3,30) sur les candidats français admissibles. Stats par question : Q1-9 : 88-100 % traitée. Q10-17 : 2,5-74,8 % traitée. Moyennes Q1-Q17 disponibles.

Accompagnement personnalisé

Travaillez ce sujet avec un prof de l'équipe

Nos professeurs anciens taupins (Polytechnique, ENS, Centrale) reprennent ce sujet avec toi en cours particulier — corrigé ligne par ligne, méthode, pièges évités.

Cours 1 à 1 en visio ou présentielCorrigé détaillé du sujetMéthode de rédaction
Travailler avec un prof
RDV gratuit de 15 min

Trouvez le prof qu'il vous faut

Échangez avec notre équipe pour trouver le professeur idéal selon vos besoins.

Matching avec le bon prof
Programme sur-mesure
Premier cours d'essai

Sans engagement • Réponse sous 24h

Stratégie

Notre approche pour ce sujet

Sujet en 3 parties. Le jury X-ENS rappelle systématiquement qu'il vaut mieux traiter en profondeur quelques parties plutôt que de survoler l'ensemble du sujet.
  • Partie I, Différentiels par positions fixes (textes de même taille) (Q1-Q9 · moyen)
  • Partie II, Distance d'édition (Levenshtein) en programmation dynamique (Q10-Q13 · dur)
  • Partie III, Modélisation graphe et plus court chemin (Dijkstra) (Q14-Q17 · tres-dur)
Stratégie générale : 15 min de lecture intégrale + choix d'attaque, puis attaque ordonnée des parties où tu marques le plus de points proprement, avec justification systématique des hypothèses des théorèmes utilisés. X-ENS récompense la rédaction approfondie, pas le grappillage.

Conseils du jury

Pièges sanctionnés par le rapport

  • Style récursif au lieu d'impératif, majoritairement échoué : « Toutes les questions de ce sujet se résolvaient naturellement avec des fonctions écrites en style impératif : boucles for, quelques boucles while. Les candidats qui ont tenté d'utiliser un style récursif pour certaines questions ont majoritairement échoué. »
  • Dépassement de bornes : comparaison avant test d'index dans while : « Il faut veiller aux dépassements de bornes de listes. Attention, dans while texte1[i] == texte2[i] and i < len(texte1) : il y a un dépassement puisque la comparaison texte1[i] == texte2[i] est exécutée avant d'avoir vérifié la borne. »
  • Modifier le texte en place au lieu de le recopier (Q5) : « La fonction ne doit pas modifier le texte en place, mais le recopier. Attention, l'instruction texte2 = texte1 ne recopie pas le texte1. »
  • Complexité O(len(texte1)*len(diff)) au lieu de O(len(texte1)) (Q5) : « Certains candidats donnent une complexité en O(len(texte1)*len(diff)). Il faut remarquer que, même s'il y a deux boucles imbriquées, le nombre total de passages dans la boucle la plus interne est bien O(len(texte1)). »
  • Récurrence Levenshtein incorrecte M[i+1][j+1] = M[i+1][j] + M[i][j+1] - M[i][j] (Q9) : « La solution proposée par plusieurs copies 'quand texte1[i] != texte2[i], M[i+1][j+1] = M[i+1][j] + M[i][j+1] - M[i][j]' est fausse. Contre exemple : texte1 = ['e', ' ', 'c', 'h', 'a', 't'], texte2 = ['h', 'i', 'e'], cette approche donne 3, la bonne réponse est 5. »

Ressources

Téléchargements

Sujet officiel, corrigé Hadamard et rapport jury — tout en un endroit.

FAQ

Questions fréquentes — 2023

Partager

Préparation X-ENS · Info MP

Bossez ce sujet 2023 avec un ancien taupin

Nos professeurs analysent votre copie sur ce sujet, identifient vos faiblesses et structurent votre révision pour la session 2024.