Sujet n°18
Sujet original
Pour télécharger l'énoncé original, cliquer ici.
Exercice n°1☘
Écrire une fonction max_et_indice qui prend en paramètre une liste non vide
tab de nombres entiers et qui renvoie la valeur du plus grand élément de
cette liste ainsi que l’indice de sa première apparition dans cette liste.
L’utilisation de la fonction native max n’est pas autorisée.
Ne pas oublier d’ajouter au corps de la fonction une documentation et une ou plusieurs assertions pour vérifier les pré-conditions.
Commentaires
Ici, le mot « liste » est à comprendre dans le sens « liste Python » (c'est-à-dire tableau) plutôt que dans le sens du type abstrait de données liste étudié en Terminale.
Exemples
>>> max_et_indice([1, 5, 6, 9, 1, 2, 3, 7, 9, 8])
(9, 3)
>>> max_et_indice([-2])
(-2, 0)
>>> max_et_indice([-1, -1, 3, 3, 3])
(3, 2)
>>> max_et_indice([1, 1, 1, 1])
(1, 0)
Une solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
Exercice n°2☘
L’ordre des gènes sur un chromosome est représenté par un tableau ordre de
n cases d’entiers distincts deux à deux et compris entre 1 et n.
Exemple
ordre = [5, 4, 3, 6, 7, 2, 1, 8, 9] dans le cas n=9.
On dit qu’il y a un point de rupture dans ordre dans chacune des
situations suivantes :
- la première valeur de
ordren’est pas1; - l’écart entre deux gènes consécutifs n’est pas égal à
1; - la dernière valeur de
ordren’est pasn.
Exemple
Si ordre = [5, 4, 3, 6, 7, 2, 1, 8, 9] dans le cas n=9, on a :
- un point de rupture au début car
5est différent de1 - un point de rupture entre
3et6(l’écart est3) - un point de rupture entre
7et2(l’écart est5) - un point de rupture entre
1et8(l’écart est7)
Il y a donc 4 points de rupture.
Compléter les fonctions Python est_un_ordre et nombre_points_rupture
pour que :
- la fonction
est_un_ordrerenvoieTruesi le tableau passé en paramètre représente bien un ordre de gènes de chromosome etFalsesinon ; - la fonction
nombre_points_rupturerenvoie le nombre de points de rupture d’un tableau passé en paramètre représentant l’ordre de gènes d’un chromosome.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | |
Commentaire sur le code original
Pour télécharger l'original du fichier à compléter, cliquer ici.
Exemples
>>> est_un_ordre([1, 6, 2, 8, 3, 7])
False
>>> est_un_ordre([5, 4, 3, 6, 7, 2, 1, 8, 9])
True
>>> nombre_points_rupture([5, 4, 3, 6, 7, 2, 1, 8, 9])
4
>>> nombre_points_rupture([1, 2, 3, 4, 5])
0
>>> nombre_points_rupture([1, 6, 2, 8, 3, 7, 4, 5])
7
>>> nombre_points_rupture([2, 1, 3, 4])
2
Une solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | |