Ep 18
ⶠTélécharger le sujet en pdf.
EXERCICE 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.
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)
RĂ©ponse
Complétez le code ci-dessous
Solution
EXERCICE 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
.
Par 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 pas 1 ; - lâĂ©cart entre deux gĂšnes consĂ©cutifs nâest pas Ă©gal Ă 1 ;
- la derniĂšre valeur de
ordre
nâest pas n.
Par exemple, si ordre = [5, 4, 3, 6, 7, 2, 1, 8, 9]
avec n = 9
, on a
- un point de rupture au début car 5 est différent de 1
- un point de rupture entre 3 et 6 (lâĂ©cart est de 3)
- un point de rupture entre 7 et 2 (lâĂ©cart est de 5)
- un point de rupture entre 1 et 8 (lâĂ©cart est de 7)
Il y a donc 4 points de rupture.
Compléter les fonctions Python est_un_ordre
et nombre_points_rupture
proposées à la page suivante 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.
RĂ©ponse
Complétez le code ci-dessous
Solution
Exemple :
>>> 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