Algorithmique et Programmation 1
CC machine 1 – 27/10/2022
Algorithmique et Programmation 1
Contrôle machine 1
27 octobre 2022 – Durée 1h
• Aucun document n’est autorisé
• Aucun matériel électronique personnel n’est autorisé - Les téléphones sont éteints
• L’utilisation de brouillons fournis est autorisé, ils seront rendus en fin d’épreuve
• Ce sujet comporte 4 questions, indépendantes les unes de autres.
• Il est nécessaire de donner la chaı̂ne de documentation, comprenant la signature, de toute
fonction écrite
• Prenez le temps de lire la totalité de l’énoncé avant d’aborder l’épreuve
• A l’ouverture de votre session vous trouverez dans votre répertoire d’examen l’énoncé de
l’épreuve et 4 fichiers [Link]. Vous devrez modifier ces fichiers pour répondre à chaque
question correspondante. Aucun autre fichier ne doit être créé.
• La session d’examen se fermera automatiquement à la fin du temps imparti. Sauvegardez
régulièrement vos modifications.
Algorithmique et Programmation 1
CC machine 1 – 27/10/2022
Les entrées sorties des exécutions de vos programmes doivent respecter celles des exemples
d’exécution donnés dans l’énoncé.
1. Génération d’une liste d’entiers composée de multiples de 3 : définir, dans le fichier
[Link], un programme qui demande à l’utilisateur deux nombres, nb_inf et nb_sup,
tels que 1 ≤ nb_inf < nb_sup ≤ 100. Si ces contraintes ne sont pas respectées, vous devrez
répéter la demande jusqu’à obtenir un résultat satisfaisant. Générez ensuite une liste contenant
tous les multiples de 3 compris entre nb_inf et nb_sup, puis affichez la.
Voici un exemple d’exécution de ce programme :
Donnez la borne inférieure comprise entre 1 et 99 : 0
Donnez la borne inférieure comprise entre 1 et 99 : 150
Donnez la borne inférieure comprise entre 1 et 99 : 18
Donnez la borne supérieure comprise entre 19 et 100: 15
Donnez la borne supérieure comprise entre 19 et 100: 150
Donnez la borne supérieure comprise entre 19 et 100: 42
La liste créée est : [18, 21, 24, 27, 30, 33, 36, 39, 42]
2. Compréhension de code : Voici une fonction mystere, implémentée dans le fichier [Link].
A l’aide de tests, déterminer sa signature et compléter la chaı̂ne de documentation. Vous pour-
rez pour cela utiliser les listes l1 et l2 fournies dans le fichier.
def mystere(l):
"""A compléter"""
myst = True
i = 0
while i < len(l) and myst :
if l[i] in l[i+1:] :
myst = False
i = i +1
return myst
3. Suppression de doublons : dans le fichier [Link], écrire un programme qui, à partir
d’une liste lis d’entiers :
• créé une liste comportant tous les éléments de lis sans doublons
• compte le nombre de doublons supprimés
• créé une liste comportant les indices des doublons supprimés
• effectue l’affichage comme sur l’exemple ci-dessous
Voici un exemple d’exécution de ce programme :
la liste en entrée est : [12, 12, 3, 18, 4, 5, 3, 16, 14, 15, 12]
la liste sans doublons est : [12, 3, 18, 4, 5, 16, 14, 15]
3 doublons ont été supprimés
12 était en position 1
3 était en position 6
12 était en position 10
Algorithmique et Programmation 1
CC machine 1 – 27/10/2022
4. Liste de tuples : Voici un algorithme qui, à partir d’une liste l, retourne sans répétition
les tuples (e, occ_e) formée des éléments e de l et du nombre de leur occurrence occ_e.
Écrire, dans le fichier [Link], une fonction en Python implémentant cet algorithme.
Attention, cet algorithme exactement doit être implémenté, sans utiliser la méthode count
donc.
Entrées : Une liste l de longueur n
Sorties : Une liste liste_occ contenant les tuples (e, occ_e)
1 Créer une liste vide liste_occ
2 i←0
3 tant que i < n faire
4 si l[i] n’appartient pas à la sous-liste de l allant de l’indice i+1 jusqu’à la fin de l
alors
5 occ_e ← 1
6 pour j ∈ [0, i − 1] faire
7 si l[i] = l[j] alors occ_e ← occ_e + 1
8 Ajouter (l[i], occ_e) dans la liste liste_occ
9 i ← i+1
10 retourner liste_occ
Voici un exemple d’exécution de ce programme :
l1 : [12, 12, 3, 18, 4, 5, 3, 16, 14, 15, 12]
l1 tuples : [(18, 1), (4, 1), (5, 1), (3, 2), (16, 1), (14, 1), (15, 1), (12, 3)]
l2 : [11, 19, 7, 18, 14, 20, 17, 12]
l2 tuples : [(11, 1), (19, 1), (7, 1), (18, 1), (14, 1), (20, 1), (17, 1), (12, 1)]
l3 : [11, 19, 7, 18, 14, 20, 19, 12, 17, 12]
l3 tuples : [(11, 1), (7, 1), (18, 1), (14, 1), (20, 1), (19, 2), (17, 1), (12, 2)]