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

Annale · 2019★★★Niveau moyenSession du 29 avril 2019· 1 612 candidats

Option Informatique Centrale-Supélec MP 2019 — sujet et rapport jury

Sujet OCaml/Caml-light sur l'énumération de Gray des écritures binaires et combinaisons (variante du sac à dos). Deux parties — listes et vecteurs. Moyenne 10.78, σ=3.58, médiane 10.4 sur 1612 présents. Sujet et rapport jury.

Mohamed K.

Mohamed K.

Centralien · MPSI puis MP · Recherche ML santé

Aperçu rapide

Difficulté

★★★Niveau moyen

Moyenne

10.78/20

Top 25%

13.2

Présents

1 612

Top piège du sujet : Syntaxe OCaml mélangée avec du Python — for i in range, références

Statistiques jury

Comment les candidats s'en sont sortis

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

Moyenne

10.78

Médiane

10.4

Écart-type

3.58

Q1 (25%)

8.2

Q3 (75%)

13.2

Candidats présents

1 612

sur 1 699 inscrits · 5.1% d'absents

Analyse

Ce qu'a observé le jury

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

Présentation du sujet

Sujet sur l'énumération de Gray des écritures binaires et leur utilisation pour générer efficacement des combinaisons. Partie I : énumération lexicographique puis dans l'ordre de Gray, étude théorique. Partie II : énumération des combinaisons de p éléments parmi n et application au problème du sac à dos restreint. Mise en œuvre en OCaml ou Caml-light, manipulation de listes (partie I) puis de vecteurs (partie II).

Structure de l'épreuve

  1. Partie IÉnumération binaire — ordre lexicographique et Gray(Q1-Q13)Niveau attendu

    Énumération lexicographique puis dans l'ordre de Gray des écritures binaires, suivie d'une étude théorique de cet ordre. Manipulation de listes. Q3-Q4 délicates pour la gestion des cas de base.

  2. Partie IICombinaisons et sac à dos (utilisation de tableaux)(Q14-Q24)Difficile

    Énumération des combinaisons de p éléments parmi n via représentation binaire. Application au problème du sac à dos restreint. Q14-Q19 imposent l'utilisation de tableaux et l'évaluation paresseuse.

Analyse globale du jury

« Le sujet a été bien compris. Malheureusement, la formulation de certaines questions a pu légitimement troubler les candidats ; elles étaient involontairement ambiguës pour une programmation en OCaml ou Caml-light. De plus une indication était fausse. Nous sommes désolés de ces défauts, mais nous avons apprécié la capacité des candidats à s'adapter, soit en signalant et corrigeant l'erreur, soit en trouvant des stratégies de contournement raisonnables. Les copies sont globalement lisibles et correctement présentées, même si certains persistent à écrire des codes sur plusieurs pages, et utilisent de nombreuses fonctions auxiliaires, sans expliquer leurs rôles et avec des noms de fonctions et de variables neutres, ce qui rend certains codes incompréhensibles en temps raisonnable. »

Top pièges sanctionnés

  • Syntaxe OCaml mélangée avec du Python — for i in range, références-2 pts

    « La syntaxe OCaml est bien respectée, même si certains inventent des fonctions comme List.make ou continuent à mélanger des éléments Python, par exemple for i in range. Nous constatons toujours de grandes difficultés sur les références : oubli fréquent de !, syntaxes farfelues, création d'une référence dans une fonction recursive au lieu de la créer à l'extérieur puis de la modifier avec la fonction recursive. »

  • Filtrages incomplets — cas de base oubliés ou mot-clé `when` absent-2 pts

    « Lors des filtrages, certains oublient le cas de base ou retournent des messages d'erreur dans ce cas, ou encore renvoient des types différents selon les cas. Nous constatons également que de nombreux candidats ne savent pas identifier les situations de filtrage où le mot-clé `when` est indispensable. »

  • Évaluation paresseuse — `&&` ne commute pas dans une boucle while-2 pts

    « Attention à l'utilisation de l'évaluation paresseuse : `while c.(!i + 1) = c.(!i) + 1 && !i < p - 1` n'équivaut pas à `while !i < p - 1 && c.(!i + 1) = c.(!i) + 1`. »

  • Références : oubli du `!`, création dans la fonction récursive-1 pts

    « De très nombreux candidats ne semblent pas mesurer le coût temporel de q@[a] pour l'ajout d'un élément a à la queue d'une liste q. Cependant, beaucoup de candidats maîtrisent bien tout cela et justifient leurs codes quand c'est nécessaire. »

  • Fonctions auxiliaires baptisées aux_1 à aux_n — code illisible-2 pts

    « Comme toujours, il faut rappeler que l'épreuve est corrigée par des humains, qui peuvent faire preuve de tolérance sur des erreurs de syntaxe peu importantes, mais doivent pouvoir comprendre sans difficulté les codes, ce qui devient impossible quand on utilise des fonctions auxiliaires nombreuses, simplement appelées aux_1 à aux_n et utilisant les mêmes noms de variables. »

Chapitres clés à maîtriser

OCaml — listes, filtrage, références
Algorithmique — récursivité et complexité
Représentation binaire et codes de Gray
Tableaux mutables et boucles impératives

Source : Rapport du jury Centrale-Supélec · Info MP, session 2019 · PDF officiel ↗

Ressources

Téléchargements

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

FAQ

Questions fréquentes — 2019

Partager

Préparation Centrale-Supélec · Info MP

Bossez ce sujet 2019 avec un ancien taupin

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

Sujet