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

Annale · 2024★★★Niveau moyenSession du 19 avril 2024· 2 109 candidats

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

Sujet Python de 2h en 4 parties de difficulté croissante (partie IV dépend de III, autres indépendantes). Moyenne 9.25, σ=3.8 sur 2109 candidats. Sujet, corrigé Hadamard et synthèse rapport jury.

Mohamed K.

Mohamed K.

Centralien · MPSI puis MP · Recherche ML santé

Aperçu rapide

Difficulté

★★★Niveau moyen

Moyenne

9.25/20

Top 25%

11.8

Présents

2 109

Top piège du sujet : Pas de test de dépassement de bornes de listes — systématiquement pénalisé

Statistiques jury

Comment les candidats s'en sont sortis

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

Moyenne

9.25

Médiane

9.3

Écart-type

3.80

Q1 (25%)

6.7

Q3 (75%)

11.8

Candidats présents

2 109

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 en 4 parties de difficulté croissante (partie IV dépend de III, autres indépendantes). Représentation : cle_l et cle_c listes de listes d'entiers, sol[i][j] dans {0,1}. Partie I (Q1-Q4) : fonctions de base (cases noires, taille minimale, vérification de solution, comparaison). Partie II (Q5-Q7) : énumération naïve par division euclidienne et amélioration. Partie III (Q8-Q10) : test de conflit, ajout incrémental. Partie IV (Q11-Q14) : algorithme de…

Structure de l'épreuve

  1. Partie IPartie I — Fonctions de base sur listes de listes(Q1-Q4)Abordable

    Q1 parcours de listes de listes (compter cases noires). Q2 réutilisation : test if i suivi de return True évité. Q3 taille minimale : sum + len − 1. Q4 vérification d'une solution : ne pas oublier de vérifier les blocs manquants. Q1-Q4 : 94-100 % traitée, 0,62-0,93 moyenne.

  2. Partie IIPartie II — Énumération via division euclidienne et récursion(Q5-Q7)Difficile

    Q5 division euclidienne (quotient + reste, pas partie entière). Q6 (récursive) très discriminante : structure récursive correcte mais peu écrivent sans erreur. Q7 amélioration via verif_ligne. 81-99 % traitée, moyennes 0,28-0,73.

  3. Partie IIIPartie III — Test de conflit et ajout incrémental(Q8-Q10)Très difficile

    Q8 test de conflit (conditions a/c ne s'appliquent pas si plage touche le bord). Q9 difficile et rarement réussie — algorithmes longs en O(nc·s) souvent. Q10 (ajout incrémental). 64-98 % traitée, moyennes 0,36-0,79.

  4. Partie IVPartie IV — Algorithme de résolution complète(Q11-Q14)Très difficile

    Q11-Q14 : algorithme final de résolution. Q11-Q14 : 10-44 % traitée, moyennes 0,22-0,38. Q13 plutôt facile (66 % moyenne) mais peu abordée. Très peu abordées dans l'ensemble.

Analyse globale du jury

« Sujet Python sur la résolution de Logimage (Picross). Sujet long avec questions assez subtiles (9, 12). Q12-Q14 très peu abordées, Q13 plutôt facile pourtant. 2109 candidats français + internationaux admissibles : moyenne 9,25/20, σ=3,80. Syntaxe Python en grande majorité maîtrisée. À l'exception de Q6 récursive, tout se résolvait en style impératif (boucles for/while). Lisibilité, noms de variables explicites, expliquer fonctions > 10 lignes en langage courant. Erreur fréquente : pas de test de dépassement de bornes de listes (systématiquement pénalisée). Plusieurs candidats ne savent pas copier une liste en Python. »

Top pièges sanctionnés

  • Pas de test de dépassement de bornes de listes — systématiquement pénalisé-2 pts

    « L'absence de test sur le dépassement de bornes de listes est une erreur trop fréquente et systématiquement pénalisée. Plusieurs candidats semblent également ignorer quand et comment copier une liste en Python. »

  • Tests booléens inutiles : if cases_noires(cle_l) == cases_noires(cle_c): return True (Q2)-1 pts

    « Beaucoup de copies ajoutent cependant des tests inutiles dans leur manipulation des booléens (par exemple, un test if suivi d'un return True). Il était suffisant d'écrire return cases_noires(cle_l) == cases_noires(cle_c) en faisant bien attention à utiliser le test d'égalité == et non le = de l'affectation. »

  • Q4 : vérifier que solution contient uniquement 0/1 au lieu de blocs manquants-2 pts

    « La question 4.2 est assez peu réussie. Quelques copies ont répondu que la fonction ne vérifie pas si la solution contient uniquement des 0 et 1. Pour avoir l'ensemble des points à cette question, la réponse d'avantage attendue était que la fonction ne vérifie pas s'il y a des blocs manquants. »

  • Exprimer la solution avec partie entière au lieu de quotient/reste de division euclidienne (Q5)-2 pts

    « Curieusement, des candidats relativement nombreux expriment la solution sous forme de partie entière au lieu de parler de quotient et de reste de la division euclidienne. D'autres se contentent d'énoncer l'égalité n = k*nc+l mais ne concluent pas sur la division euclidienne. Les copies qui se sont contentées d'indiquer cette égalité n'ont pas eu de points. »

  • Mauvaise spécification de la fonction auxiliaire récursive — retourner liste au lieu de la modifier (Q6)-2 pts

    « Une mauvaise compréhension de la spécification de la fonction auxiliaire : elle doit ajouter les solutions trouvées à la liste passée en argument ; notamment, elle ne doit pas retourner cette liste. L'ajout de solutions à liste sans effectuer de copie au préalable (avec la fonction copy_sol() nommée dans le sujet). »

Chapitres clés à maîtriser

Programmation Python (listes, listes de listes, copies)
Récursion (algorithme exponentiel, structure)
Programmation incrémentale (énumération, conflit)
Algorithmique de la division euclidienne (quotient/reste)
Analyse de complexité (exponentiel, justification)

Ressources

Téléchargements

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

FAQ

Questions fréquentes — 2024

Partager

Préparation X-ENS · Info MP

Bossez ce sujet 2024 avec un ancien taupin

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

Sujet