Mini Concours Ipest 2018
Mini Concours Ipest 2018
Mini Concours Ipest 2018
Mini concours
Epreuve d’informatique
On considère la chute libre d’un objet, on émet l’hypothèse qu’il est soumis à son poids et à une force de
frottement de l’aire proportionnelle au carré de la vitesse. A l’aide du principe fondamental de la dynamique,
on obtient que
𝑑𝑣 𝑘
+ 𝑣 2 = 𝑔,
𝑑𝑡 𝑚
On observe que l’objet d’une masse de 80 kg atteint une vitesse limite de 69.5 mètres /seconde. En utilisant
𝑘 𝑘 𝑔
l’équation différentielle, cette vitesse limite 𝑣𝑡 doit vérifier 𝑚
𝑣 2 = 𝑔 et donc 𝑚
= 𝑣2
. Ceci permet de
𝑘 𝑘 9.8
calculer 𝑚 𝑒𝑡 𝑘 .On trouve 𝑚
= 69.52
= 2 ∗ 10−3 𝑆𝐼 .puis k =0.16
Ecrire un programme python nommé Euler permettant de représenter la courbe de la vitesse pendant les 10
premières secondes. On prendra pour vitesse initiale zéro
1
Avec F et G deux fonctions à déterminer.
Dans cet exercice, nous nous intéressons à la mise en place d’un « floutage » sur une image couleur. Pour
réaliser un floutage par moyenne simple sur la matrice de pixels, il faut lui appliquer un filtre, que l’on appelle
également un masque. On considère les matrices :
1/9 1/9 1/9
𝐴 = (1/9 1/9 1/9)
1/9 1/9 1/9
5 6 7 8 9 10
5 6 7 8 9 10
Et 𝐵= 1 1 1 1 1 1
2 2 3 3 4 4
(0 0 1 3 3 3)
Pour chaque élément bij, on considère la matrice carré de taille 3 qui l’entoure notée Bij et on calcule le produit
de Bij par A (multiplication classique A*Bij). A est appelée noyau, on note cij la somme des coefficients de la
matrice produit obtenue.
Si bij est un élément sur la bordure de B, on posera cij=bij. On formera ainsi une nouvelle matrice C dont les
éléments intérieurs sont les cij et les éléments extérieurs sont les bij
On dit que l’on a filtré la matrice B par la matrice A ou que l’on a appliqué le masque A sur l’image B.
1. Ecrire une fonction « floutage » prenant en entrée une matrice A, une matrice B et renvoyant la
matrice C selon le procédé décrit ci haut.
2. Ecrire une fonction floutage_2 permettant de faire la même chose mais cette fois-ci sur une image
couleur (de dimension 3(R,G,B))
3. Ecrire un programme Python permettant de:
a. Ouvrir une image nommée ‘soleil.png’ situé dans le dossier ‘c:\Mesdocuments\info\ images’,
cette image sera notée B (soleil est une image couleur).
b. Visualiser cette image.
c. Appliquer le floutage_2 en utilisant la matrice A.
d. Visualiser l’image flouté et l’enregistrer dans le même dossier.
import numpy as np
import matplotlib.pyplot as plt
Problème
Ce sujet concerne la conception d’un logiciel d’étude de trafic routier. On modélise le déplacement d’un
ensemble de voitures sur des files à sens unique (voir Figure 1(a) et 1(b)). C’est un schéma simple qui peut
permettre de comprendre l’apparition d’embouteillages et de concevoir des solutions pour fluidifier le trafic.
Le sujet comporte des questions de programmation. Le langage à utiliser est Python.
on note len(L) sa longueur; pour i entier, 0 <= i < len(L), l’élément de la liste d’indice i est noté
L[i] ;
2
pour i et j entiers, 0<= i<j<=len(L), L[i : j] est la sous-liste composée des éléments L[i],. .
., L[j − 1] ;
p * L, avec p entier, est la liste obtenue en concaténant p copies de L. Par exemple, 3 *[0] est
la liste [0, 0, 0].
(a) représentation d’une file de longueur 11 (b) Configuration représentant deux files de
comprenant 4 voitures, situées circulation à sens unique de croisant en
respectivement sur les cases d’indice 0, une case. Les voitures sont représentées
2,3 et 10 par un carré gris
Partie I. Préliminaires
Dans un premier temps, on considère le cas d’une seule file, illustrée par la Figure 1(a). Une file de
longueur n est représentée par n cases. Une case peut contenir au plus une voiture. Les voitures
présentes dans une file circulent toutes dans la même direction (sens des indices croissants, désigné
par les flèches sur la Figure 1(a)) et sont indifférenciées.
Q1 – Expliquer comment représenter une file de voitures à l’aide d’une liste de booléens.
Q2 – Donner une ou plusieurs instructions Python permettant de définir une liste A représentant la
file de voitures illustrée par la Figure 1(a).
Q3 –Soit L une liste représentant une file de longueur n et i un entier tel que 0 <=i < n.
Définir en Python la fonction occupe(L, i) qui renvoie True lorsque la case d’indice i de la file est
occupée par une voiture et False sinon.
Q4 – Combien existe-t-il de files différentes de longueur n ? Justifier votre réponse.
Q5 - Ecrire une fonction egal(L1, L2) retournant un booléen permettant de savoir si deux listes L1 et
L2 sont égales.
Q6 – Que peut-on dire de la complexité de cette fonction ?
Q7 – Préciser le type de retour de cette fonction.
3
voitures de la file à tour de rôle, en commençant par la voiture la plus à droite, d’après les règles
suivantes :
• une voiture se trouvant sur la case la plus à droite de la file sort de la file;
• une voiture peut avancer d’une case vers la droite si elle arrive sur une case inoccupée;
• une case libérée par une voiture devient inoccupée;
• la case la plus à gauche peut devenir occupée ou non, selon le cas considéré.
On suppose avoir écrit en Python la fonction avancer prenant en paramètres une liste de départ, un
booléen indiquant si la case la plus à gauche doit devenir occupée lors de l’étape de simulation, et
renvoyant la liste obtenue par une étape de simulation.
Par exemple, l’application de cette fonction à la liste illustrée par la Figure 2(a) permet d’obtenir soit
la liste illustrée par la Figure 2(b) lorsque l’on considère qu’aucune voiture nouvelle n’est introduite,
soit la liste illustrée par la Figure 2(c) lorsque l’on considère qu’une voiture nouvelle est introduite.
Q9 -On considère L une liste et m l’indice d’une case de cette liste (0 < m < len(L)). On s’intéresse à
une étape partielle où seules les voitures situées sur la case d’indice m ou à droite de cette case
peuvent avancer normalement, les autres voitures ne se déplaçant pas.
4
Définir en Python la fonction avancer_debut_bloque(L, b, m) qui réalise cette étape partielle de
déplacement et renvoie le résultat dans une nouvelle liste.
On considère dorénavant deux files L1 et L2 de même longueur impaire se croisant en leur milieu ;
on note m l’indice de la case du milieu. La file L1 est toujours prioritaire sur la file L2. Les voitures ne
peuvent pas quitter leur file et la case de croisement ne peut être occupée que par une seule voiture.
Les voitures de la file L2 ne peuvent accéder au croisement que si une voiture de la file L1 ne s’apprête
pas à y accéder. Une étape de simulation à deux files se déroule en deux temps.
Dans un premier temps, on déplace toutes les voitures situées sur le croisement ou après. Dans un
second temps, les voitures situées avant le croisement sont déplacées en respectant la priorité. Par
exemple, partant d’une configuration donnée par la Figure 3(a), les configurations successives sont
données par les Figures 3(b), 3(c), 3(d), 3(e) et 3(f) en considérant qu’aucune nouvelle voiture n’est
introduite.
Q12 – En utilisant le langage Python, définir la fonction avancer_files(L1, b1, L2, b2) qui renvoie le
résultat d’une étape de simulation sous la forme d’une liste de deux éléments notée [R1, R2] sans
changer les listes L1 et L2. Les booléens b1 et b2 indiquent respectivement si une nouvelle voiture
est introduite dans les files L1 et L2. Les listes R1 et R2 correspondent aux listes après déplacement.
Q13 – On considère les listes D = [ False, True, False, True, False], E = [False, True, True, False, False]
Que renvoie l’appel avancer files (D, False, E, False) ?