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

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é

Session 2023 :

InfoMathsPhysiquePhysique
Aperçu rapide

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. »

Chapitres clés à maîtriser

Algorithmique : programmation dynamique, distance de Levenshtein
Graphes : plus court chemin, Dijkstra, algorithme A*
Python : structures de données différentielles
Récurrence et matrices d'édition
Complexité d'algorithmes de graphe

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

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.

Sujet