Mines Informatique Commune MP PC PSI 2015Sujet, corrigé et rapport du jury
Tests de validation d’une imprimante
- Représentation des entiers et précision de la mesure
- Manipulation de chaînes de caractères et de listes
- Statistiques (moyenne, écart-type) et méthode des trapèzes
- Requêtes SQL et jointures
- Codage de Huffman
- Résolution numérique d'équations différentielles
Téléchargements
Présentation du sujet
DifficileInformatique pour tous Mines : tests de validation d'une imprimanteAfficher ou masquer la section
Présentation du sujet
DifficileLe sujet suit la chaîne de traitement de tests de validation d'imprimantes : réception des données d'une carte d'acquisition, analyse statistique des mesures, interrogation d'une base de données, compression par codage de Huffman, puis simulation physique pour détecter les pannes d'un moteur.
- 1Partie I : réception des données de la carte d'acquisitionDétermination de la précision des mesures codées sur un nombre limité de bits, lecture d'une trame de caractères et vérification par checksum.
- 2Partie II : analyse des mesuresCalcul de la moyenne par la méthode des trapèzes et de l'écart-type des valeurs mesurées.
- 3Partie III : base de donnéesRédaction de requêtes SQL pour identifier les imprimantes valides ou non selon des critères de moyenne et d'écart-type.
- 4Partie IV : compression du fichier texteAnalyse d'une fonction de codage de Huffman donnée et évaluation de sa complexité.
- 5Partie V : simulation physiqueRésolution numérique de l'équation différentielle d'un moteur et comparaison avec des enregistrements pour détecter une défectuosité.
Difficile. Le rapport conclut qu'en moyenne les connaissances des élèves sont approximatives et la syntaxe du langage mal assimilée, et signale que le sujet, un peu long, comportait des questions atteintes par peu de candidats.
Ce qu'a observé le jury
5 erreurs relevéesSigne d'un nombre entier mal maîtrisé · Confusion and / or · Soustraction float / listeAfficher ou masquer la section
Ce qu'a observé le jury
5 erreurs relevéesLe sujet couvre une bonne partie du programme et permet de classer correctement les candidats, mais il était un peu long. Le jury constate en moyenne des connaissances approximatives et une syntaxe Python mal assimilée, en particulier sur les questions de fin de sujet peu atteintes.
Les erreurs les plus sanctionnées
- 1Signe d'un nombre entier mal maîtriséQ1
Peu d'élèves maîtrisent la notion de signe d'un nombre entier et une grande majorité a répondu sans prendre en compte cet aspect.
- 2Confusion and / orQ3
Pour tester si le premier caractère lu appartient à un ensemble de caractères, beaucoup d'élèves confondent and et or.
- 3Soustraction float / listeQ7
Une erreur courante consiste à vouloir soustraire une variable de type float d'un objet de type liste pour calculer l'écart entre une mesure et la moyenne.
- 4Confusion requêtes SQL et imports PythonQ8
Un certain nombre de candidats confondent les requêtes SQL de type SELECT ... FROM ... avec l'importation de modules Python de type from ... import ....
- 5Structure de jointure incorrecteQ10
Beaucoup de candidats ont bien compris qu'il fallait faire une différence entre deux tables, mais la structure globale de la requête proposée est généralement incorrecte.
Ce qui a été bien réussi
- Les questions 12 et 13 sont souvent bien traitées par les élèves qui les ont atteintes et qui ont compris le principe de l'algorithme de Huffman.
- Les questions 8 à 10 ont été généralement abordées avec des réponses globalement pertinentes.
- Le calcul de la moyenne a été bien fait dans l'ensemble à la question 7.
Conseils du jury
- Utiliser directement les opérateurs de base (valeur absolue, modulo) plutôt que de redéfinir des fonctions correspondantes, ce qui fait perdre du temps.
- Bien lire l'énoncé pour identifier le paramètre exact attendu dans une fonction demandée.
- Donner systématiquement le type des valeurs retournées quand l'énoncé le demande, notamment pour l'instruction isinstance.
Synthèse rédigée par WikiPrépa à partir du rapport officiel du jury (à télécharger en PDF). Les citations sont extraites du rapport.
Ces sujets peuvent vous intéresser
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.Afficher ou masquer la section
Lecture du sujet en ligne
ÉCOLE DES PONTS PARISTECH. SUPAERO (ISAE), ENSTA PARISTECH, TELECOM PARISTECH, MINES PARISTECH MINES DE SAINT-ÉTIENNE, MINES NANCY, TÉLÉCOM BRETAGNE, ENSAE PARISTECH (Filière MP). ÉCOLE POLYTECHNIQUE (Filière TSI).
ÉPREUVE D'INFORMATIQUE
Tests de validation d'une imprimante
Introduction

Rappels et définitions :
- Une liste commence par un crochet [ et se termine par un crochet ]. Les éléments d'une liste sont ordonnés (indexés).
- On pourra utiliser la surcharge de l'opérateur
+ : [ ' a '] + [ ' b '] = [ ' a ' , ' b '] . - Un dictionnaire définit une relation une à une entre des clés et des valeurs. Celui-ci se note entre accolades {}.
- Un tuple est une collection d'éléments ordonnés comme dans une liste mais une fois le tuple créé, ses éléments ne peuvent pas être modifiés indépendamment les uns des autres. Il se note entre parenthèses (). Exemple : (4, 'e',
[1, 3] )
I Réception des données issues de la carte d'acquisition
- un entête qui permet d'identifier la mesure sur un caractère ('U' tension moteur, 'I 'courant moteur, 'P' position absolue),
- le nombre de données envoyées (3 caractères),
- les données constituées des mesures brutes issues de la conversion analogique-numérique, chaque mesure étant codée à l'aide du caractère '+' ou '-' suivi de 3 caractères pour la valeur absolue,
- un checksum, somme des valeurs absolues des données précédentes modulo 10000 sur 4 caractères. Le nombre de données transmises n'est pas inclus dans le checksum.

La commande carac_recus=com.read(nbre_car) permet de récupérer nbre_car caractères reçus sous la forme d'une chaîne de caractères. En supposant que les caractères reçus correspondent à l'exemple précédent, après l'exécution de carac_recus=com.read(5), la variable carac_recus contiendra la chaîne "U005+".

II Analyse des mesures
- Le calcul de la valeur moyenne
I_(moy) du signalI(t) sur la durée d'acquisition.
- Le calcul de l'écart type
I_(ec) du signalI(t) sur la durée d'acquisition.
III Base de données
testfin
| nSerie | dateTest |
|
Imoy | Iec |
|
fichierMes |
| 230-588ZX2547 | 2012-04-22 14-25-45 | 0.45 | 0.11 | mesure31025.csv | ||
| 230-588ZX2548 | 2012-04-22 14-26-57 | 0.43 | 0.12 | mesure41026.csv | ||
|
|
|
|
|
|
|
|
| Num | nSerie | dateProd | type |
| 20 |
|
|
JETDESK-1050 |
| 21 |
|
|
JETDESK-3050 |
|
|
|
|
|
IV Préparation du fichier texte avant envoi : la compression
IV. 1 Présentation :
dictionnaire contenant la liste des caractères présents dans le texte, associé à leur fréquence dans ce texte. Exemple : "AABCDCCEF" donnera

Le code Python permettant de construire un arbre de Huffman et de coder chaque caractère est fourni en annexe.
Q11. La documentation de l'instruction isinstance(object,classinfo) décrit le fonctionnement suivant : "Return True if the object is an instance of the classinfo argument. If object is not a class instance of the given type, the function returns False." Décrire succinctement le rôle des fonctions suivantes et indiquer le type de la variable retournée :
- test()
- get1()
- get2()
IV. 2 Analyse des fonctions make_huffman_tree() et freq_table()
IV. 3 Analyse de la fonction insert_item()
IV. 4 Analyse de build_huffman_tree()
V Simulation physique
Q22. Écrire en langage Scilab une fonction qui calcule de manière approchée la solution de l'équation différentielle précédente pour le signal
Annexe
Huffman tree :
###############################################################################
### Auto Generation of Huffman Trees
###########################################################################
def make_leaf(symbol, weight):
return (symbol, weight)
def test(x):
return isinstance(x, tuple) and \
len(x) == 2 and \
isinstance(x[0], str) and \
isinstance(x[1], int)
def get1(x):
return x[0]
def get2(x):
return x[1]
def get3(huff_tree):
return huff_tree[0]
def get4(huff_tree):
return huff_tree[1]
def get5(huff_tree):
if test(huff_tree):
return [get1(huff_tree)] #Attention le symbole est dans une liste
else:
return huff_tree[2]
def get6(huff_tree):
if test(huff_tree):
return get2q(huff_tree)
else:
return huff_tree [3]
def make_huffman_tree(left_branch, right_branch):
return [left_branch,
right_branch,
get5(left_branch) + get5(right_branch),
get6(left_branch) + get6(right_branch)]
### entr\'{e}e : string txt et retourne un dictionnaire contenant chaque
### caractere avec son occurrence dans le string txt
def freq_table(txt):
ftble = {}
for c in txt:
if c not in ftble:
ftble[c] = 1
else:
ftble[c] += 1
return ftble
### Fonction de comparaison qui permet de comparer
### les noeuds de Huffman entre eux selon leur occurrence.
def freq_cmp(node1, node2):
freq1, freq2 = get6(node1), get6(node2)
if freq1 < freq2:
return -1
elif freq1 > freq2:
return 1
else:
return 0
### ins\'{e}re un item \'{a} sa place appropri\'{e}e dans une liste de
noeuds et feuilles
def insert_item(item, lst, pos):
if pos == len(lst):
lst.append(item)
elif freq_cmp(item, lst[pos]) <= 0 :
lst.insert(pos, item)
else:
insert_item(item, lst, pos+1)
return
### Construction de l'arbre de Huffman
def build_huffman_tree(txt):
### 1. construire une table des occurrences \'{a} partir de txt
ftble = freq_table(txt)
### 2. obtenir la liste des feuilles de Huffman
lst = list(ftble.items())
### 3. classer leaf_lst par occurrence de la plus petite \'{a} la plus
### grande
lst.sort(key=lambda lst: lst[1])
### 4. construction de l'arbre de huffman
if len(lst) == 0:
return None
elif len(lst) == 1:
return lst[0]
else:
## 5.
while len(lst) > 2:
## 6.
new_node = make_huffman_tree(lst[0], lst[1])
## 7.
del lst[0]
del lst[0]
## 8.
insert_item(new_node, lst, 0)
else:
return make_huffman_tree(lst[0], lst[1])
blogspot.fr/2012/02/manual-and-auto-generation-of-huffman.html
Huffman tree generator http://huffman.ooz.ie/
Questions fréquentes
3 questionsSur quels chapitres porte l'épreuve d'informatique pour tous des Mines MP-PC-PSI 2015 ?Afficher ou masquer la section
Questions fréquentes
3 questionsSur quels chapitres porte l'épreuve d'informatique pour tous des Mines MP-PC-PSI 2015 ?
Elle porte sur la précision de la représentation des entiers, le traitement de chaînes de caractères, les statistiques (moyenne, écart-type), les requêtes SQL, le codage de Huffman et la résolution numérique d'équations différentielles.
Quelles erreurs le jury a-t-il le plus relevées à l'informatique pour tous des Mines 2015 ?
Une mauvaise maîtrise du signe des entiers, une confusion entre and et or, des erreurs de type entre float et liste, et une confusion entre requêtes SQL et imports Python.
Le sujet d'informatique pour tous des Mines MP-PC-PSI 2015 est-il difficile ?
Le rapport le juge un peu long et conclut qu'en moyenne les connaissances des élèves sont approximatives et la syntaxe du langage mal assimilée.
Pas de description pour le moment
