Aller au contenu

Index des sujets 2022

Corrigé sujet 06 - Année : 2022

Sujet 06 - 2022

Exercice 1

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

Commentaires

  • Rien n'est indiqué pour la liste vide, on a choisit de renvoyer le couple (None,None) dans ce cas
  • Un parcours par indice est nécessaire puisqu'on a besoin de la position du maximum.

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
def recherche(gene, seq_adn):
    n = len(seq_adn)
    g = len(gene)
    i = 0 #(1)
    trouve = False
    while i < n-g and trouve == False : #(2)
        j = 0
        while j < g and gene[j] == seq_adn[i+j]:
            j += 1 #(3)
        if j == g:
            trouve = True
        i+=1 #(4)
    return trouve

print(recherche("AATC", "GTACAAATCTTGCC"))
print(recherche("AGTC", "GTACAAATCTTGCC"))
  1. C'est l'indice i de parcours de la chaîne, initialisé à 0
  2. La recherche continue tant que i est inférieure à la longueur de la chaine (n) - la longueur du motif (g) et que la motif n'a pas été trouvé
  3. On a une correspondance, j est l'indice de parcours du motif, on continue à chercher en avançant dans le motif j=j+1.
  4. On passe à l'indice suivant de la chaîne.

Attention

  • La recherche textuelle n'est pas au programme de l'épreuve de Bac.
  • Le double parcours avec un indice parcourant la chaîne et un autre le motif présente sans doute une difficulté.
  • Au lieu de trouve == False (ligne 6), on peut écrire not trouve qui est sans doute plus parlant.