Aller au contenu

Index des sujets 2023

Corrigé sujet 18 - Année : 2023

Sujet 18 - 2023

Exercice 1

1
2
3
4
5
6
7
8
def max_et_indice(tab):
    maxi = tab[0]
    indice = 0
    for i in range(len(tab)):
        if tab[i] > maxi:
            maxi = tab[i]
            indice = i
    return maxi, indice

Exercice 2

 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
def est_un_ordre(tab):
    '''
    Renvoie True si tab est de longueur n et contient tous les entiers
    de 1 à n, False sinon
    '''
    for i in range(1,len(tab)+1):
        if i not in tab:  #(1)
            return False
    return True


def nombre_points_rupture(ordre):
    '''
    Renvoie le nombre de point de rupture de ordre qui représente un ordre
    de gènes de chromosome
    '''
    assert est_un_ordre(ordre) # ordre n'est pas un ordre de gènes
    n = len(ordre)
    nb = 0
    if ordre[0] != 1: # le premier n'est pas 1
        nb = nb + 1
    i = 0
    while i < n-1:
        if ordre[i]-ordre[i+1] not in [-1, 1]: # l'écart n'est pas 1 #(2)
            nb = nb + 1
        i = i + 1
    if ordre[n-1] != n: # le dernier n'est pas n #(3)
        nb = nb + 1
    return nb
  1. On vérifie que tous les entiers \(1, 2, 3,...,n\) sont bien dans le tableau
  2. On pourrait utiliser la valeur absolue : abs(ordre[i]-ordre[i+1]) == 1
  3. On rappelle que si la longueur d'un tableau est  n, alors l'indice de son dernier élément est n-1