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
- Partie I — Partie 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.
- Partie II — Partie 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.
- Partie III — Partie 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.
- Partie IV — Partie 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
Ressources
Téléchargements
Sujet officiel, corrigé Hadamard et rapport jury — tout en un endroit.
FAQ

