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
ordre
n’est pas1
; - l’écart entre deux gènes consécutifs n’est pas égal à
1
; - la dernière valeur de
ordre
n’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
5
est différent de1
- un point de rupture entre
3
et6
(l’écart est3
) - un point de rupture entre
7
et2
(l’écart est5
) - un point de rupture entre
1
et8
(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_ordre
renvoieTrue
si le tableau passé en paramètre représente bien un ordre de gènes de chromosome etFalse
sinon ; - la fonction
nombre_points_rupture
renvoie 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 |
|