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

Aller au contenu principal
Annale · 2023Session du 21 avril 2023

Info X-ENS PSI 2023 · Info-B, gestion de versions de textes

Sujet Informatique X-ENS PSI 2023 (sigle Info-B), composition Python 2h sur la gestion de versions de textes. Différentiel, distance de Levenshtein, plus court chemin (Dijkstra), algorithme A*. Niveau jugé 'assez faible' par le jury. Top pièges et analyse Hadamard.

Mohamed K.

Mohamed K.

Centralien · MPSI puis MP · Recherche ML santé

4
Coefficient
Info X-ENS

Session 2023 :

InformatiqueMathsModelisationPhysique

Top piège du sujet

Code illisible (i,j,x,y monolettres, indentations approximatives)

Analyse

Ce qu'a observé le jury

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

Présentation du sujet

Composition d'informatique 2h, filière PSI (sigle 'Info-B' en 2023). Sujet sur la réalisation d'un système de gestion de versions de grands textes et plus particulièrement la notion de différentiel entre textes. Trois parties : Partie 1 différentiels entre textes (même puis différentes tailles), algorithmes de gestion de versions. Partie 2 lien entre calcul d'un différentiel et recherche d'un plus court chemin dans un graphe. Partie 3 algorithme A* avec heuristique admissible.

Structure de l'épreuve

  1. Partie IPartie 1, Différentiels et gestion de versions(Q1-Q7)Difficile

    Différentiels entre textes. Q1 oubli de tester l'égalité des longueurs. Q3 nombre de candidats échouent malgré la simplicité. Q4 distance de Levenshtein, récursion mal traitée.

  2. Partie IIPartie 2, Distance d'édition (Levenshtein)(Q8-Q13)Très difficile

    Calcul du poids d'un différentiel. Distance d'édition par récurrence (Levenshtein, programme officiel). Q9 candidats ne traitent pas correctement texte1[i+1] != texte2[j+1]. Q10 corner cases mal gérés.

  3. Partie IIIPartie 3, Plus court chemin (Dijkstra, A*)(Q14-Q17)Très difficile

    Construction de la fonction successeur du graphe d'édition. Q15 connaissance fine de Dijkstra requise, presque jamais traitée. Q17 algorithme A*, aucune copie n'a proposé de solution correcte.

Analyse globale du jury

« Le sujet portait sur la réalisation d'un système de gestion de versions de grands textes. La partie 1 portait sur les différentiels entre textes de même taille. Puis, la partie 2 étudiait les différentiels entre textes de tailles différentes. Enfin, la partie 3 étudiait le lien entre le calcul d'un différentiel entre textes et la recherche d'un plus court chemin dans un graphe. Globalement, le niveau est assez faible, beaucoup de candidats ne semblent pas du tout maîtriser l'algorithmique et le langage Python. »

Top pièges sanctionnés

  • Code illisible (i,j,x,y monolettres, indentations approximatives)-2 pts

    « Le jury rappelle que le code demandé sera lu. Il est donc nécessaire de produire du code lisible. En particulier les noms de variables doivent être judicieux et le code doit être commenté. Par exemple, les noms de variable à une lettre i,j,x,y sont à proscrire, au moins dès qu'on dépasse le cas simple de l'indice d'une boucle seule. »

  • Algorithme de Dijkstra et complexité non connus (Q15-Q16)-3 pts

    « À un niveau supérieur, les quelques candidats qui ont atteint la partie 3 montrent une méconnaissance de l'algorithme de Dijkstra et de sa complexité, pourtant au programme. »

  • Algorithme A* : aucune solution correcte (Q17)-3 pts

    « Enfin, cette question cherche à utiliser l'algorithme A* et demande d'exhiber une heuristique admissible. Un très petit nombre de candidats a eu l'idée de proposer une fonction linéaire en i et j. Aucune copie n'a proposé de solution correcte. »

  • Distance de Levenshtein (au programme) mal écrite (Q9)-3 pts

    « Cette question demande une récurrence pour calculer la distance d'édition entre deux textes. Il s'agit en fait d'une question de cours, la distance de Levenstein étant au programme. Malgré cela, le cas texte1[i+1] != texte2[j+1] n'est presque jamais traité correctement. »

  • Corner cases (cas particuliers) systématiquement ignorés-2 pts

    « Comme d'habitude, les corner cases ont rarement été traités correctement. Typiquement, lorsque les candidats se contentent d'insérer une tranche dès que texte1[i] == texte2[i] en oubliant la dernière tranche. »

Source : Rapport du jury X-ENS · Info PSI, session 2023 · PDF officiel ↗

Contexte

L'épreuve en quelques chiffres

L'épreuve Info X-ENS PSI 2023 (Info-B), durée 2h. Composition Python sur la gestion de versions de grands textes via la notion de différentiel, distance de Levenshtein, Dijkstra, A*.

Niveau jugé 'assez faible' par le jury, beaucoup de candidats ne maîtrisent pas l'algorithmique de base. Aucune copie n'a proposé une solution A* correcte (Q17).

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 exigeant. Stratégie : maîtriser la distance de Levenshtein (au programme) en Q4 et la coder rigoureusement en programmation dynamique en Q9-Q10. Partie 3 (Dijkstra, A*) très peu accessible, viser quelques questions seulement.

Gestion des 2h : 10 min lecture, 50 min sur Partie 1 (Q1-Q7, différentiels), 50 min sur Partie 2 (Q8-Q13, Levenshtein), 10 min sur Partie 3 (Q14-Q15 maximum, Dijkstra). Q16, Q17 (complexité Dijkstra, A*) sacrifiables.

Conseils du jury

Cinq conseils transversaux

  • Code lisible : variables nommées (pas i, j, x, y monolettres), indentation correcte, commentaires.
  • Distance de Levenshtein au programme : à connaître par cœur, implémentation par programmation dynamique.
  • Algorithme de Dijkstra et sa complexité au programme : à maîtriser.
  • A* : heuristique admissible : sous-estimation de la distance restante (fonction linéaire en i et j ici).
  • Traiter les corner cases : premier/dernier élément, listes vides.

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 PSI

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.