Devoir libre d’informatique : colloscope
On rendra les algorithmes sur papier. Les programmes python seront envoyés par courrier électronique. Ils devront
être clairs, correctement commentés, et suivis d’exemples pour bien montrer qu’ils fonctionnent.
Les deux dernières questions sont plus libres : vous serez amenés à choisir vous-même la démarche, en particulier
vous devrez décider quels algorithmes écrire. De manière générale, on conseille de préférer plusieurs petits algorithmes
simples plutôt qu’un gros.
On trouvera les deux fichiers "colloscope801.txt" contenant le calendrier des séances d’oral de la classe, et "lec-
ture.py", contenant le script python pour charger ce colloscope dans python, sur prepaBarthou ou sur le site internet
du professeur. Téléchargez ces deux fichiers et procédez ainsi :
— Ouvrez le script dans un éditeur comme IEP.
— A la première ligne, dans adresseDuFichier, indiquez l’adresse où vous avez placé le fichier colloscope801.txt.
Rappel : si vous êtes sous windows, pour éviter les problèmes de caractères spéciaux, il faudra mettre des
doubles contre-obliques ("\\") pour indiquer les répertoires.
— Exécutez le script. Les tableaux collesMath,collesPhysique,collesAnglais ,infosMath,infosPhysique
et infosAnglais sont alors chargés en mémoire, vous pourrez les utiliser pour répondre aux questions ci-
dessous.
Remarque: Ces tableaux seront des variables dites "globales", ce qui signifie qu’elles seront accessibles à l’in-
térieur de n’importe quel programme. Veillez à ne pas les modifier accidentellement.
Le tableau collesMath fonctionne ainsi : pour tout (i,j)∈~1,162, la case (i,j) du colloscope de math se trouve
dans collesMath[i-1][j-1]. Il s’agit donc du numéro de trinôme qui aura la i◦colle lors de la j◦semaine. (i
représente le numéro de ligne, et jle numéro de colonne.)
Les tableaux collesPhysique et collesAnglais sont similaires.
Le tableau infosMath contient les informations sur les différentes colles : pour tout i∈~1,16,infoMath[i-1]
contient les informations de la i◦colle, sous cette forme :
[ "nom de l’examinateur", "jour", "heure", "salle"]. Par exemple infosMath[i-1][0] renverra
le nom de l’examinateur pour la i◦colle.
1. Écrire un algorithme quelleColleDeMathCetteSemaine prenant en entrée deux entiers set get renvoyant le
numéro (i.e. le numéro de la ligne correspondante dans le colloscope) de la colle de math qu’aura le groupe gla
semaine s.
2. Écrire un algorithme quelleColleDePhysiqueCetteSemaine prenant en entrée deux entiers set get ren-
voyant le numéro de la colle de physique qu’aura le groupe gla semaine s. Si ce groupe n’a pas physique cette
semaine, renvoyer -1.
On pourra utiliser à la question suivante l’algorithme analogue quelleColleDAnglaisCetteSemaine, mais
on ne demande pas de l’écrire sur la copie.
3. Finalement, écrire un algorithme quellesCollesCetteSemaine prenant en entrée deux entiers set get af-
fichant les deux colles qu’aura le groupe gla semaine s. On affichera les informations de ces deux colles, en
particulier matière, heure, lieu.
Remarque: Les salles de physique n’étant pas présentes dans le colloscope, il y aura des blancs.
4. bonus : prendre en compte l’espagnol : un groupe qui n’apparaît ni en physique, ni en anglais a espagnol le
mardi à 17h.
5. Écrire un algorithme prioriteALaCantine qui ne prend aucun argument et qui calcule pour chaque semaine
la liste des groupes qui ont une colle à 13h. Le tableau renvoyé se présentera sous cette forme :
[ [listes des groupes semaine 1], [liste des groupes semaine 2], ...
... , [liste des groupes semaine 16] ].
6. Y a-t-il des groupes qui ne voient pas tous les examinateurs ? Si oui lesquels ?
7. Vérifier que vous n’aurez jamais deux colles en même temps.