Aller au contenu

Ep 27

le document

l'algorithme

Issue de : 23-NSI-36⚓

EXERCICE 1⚓

Écrire une fonction couples_consecutifs qui prend en paramĂštre une liste de nombres entiers tab non vide, et qui renvoie la liste (Ă©ventuellement vide) des couples d'entiers consĂ©cutifs successifs qu'il peut y avoir dans tab.

Exemples :

🐍 Script Python
>>> couples_consecutifs([1, 4, 3, 5])
[]
>>> couples_consecutifs([1, 4, 5, 3])
[(4, 5)]
>>> couples_consecutifs([1, 1, 2, 4])
[(1, 2)]
>>> couples_consecutifs([7, 1, 2, 5, 3, 4])
[(1, 2), (3, 4)]
>>> couples_consecutifs([5, 1, 2, 3, 8, -5, -4, 7])
[(1, 2), (2, 3), (-5, -4)]

RĂ©ponse

Complétez le code ci-dessous

###
# Mettre votre code icibksl-nlbksl-nl



Solution

###
def couplespy-undconsecutifs(tab):bksl-nl solution = []bksl-nl for i in range(len(tab)-1):bksl-nl if tab[i] + 1 == tab[i+1]:bksl-nl solution.append((tab[i], tab[i+1]))bksl-nl return solutionbksl-nlbksl-nltry:bksl-nl assert couplespy-undconsecutifs([1, 4, 3, 5]) == []bksl-nl assert couplespy-undconsecutifs([1, 4, 5, 3]) == [(4, 5)]bksl-nl assert couplespy-undconsecutifs([1, 1, 2, 4]) == [(1, 2)]bksl-nl assert couplespy-undconsecutifs([7, 1, 2, 5, 3, 4]) == [(1, 2), (3, 4)]bksl-nl assert couplespy-undconsecutifs([5, 1, 2, 3, 8, -5, -4, 7]) == [(1, 2), (2, 3), (-5, -4)]bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nl



EXERCICE 2⚓

Soit une image binaire représentée dans un tableau à 2 dimensions. Les éléments M[i][j], appelés pixels, sont égaux soit à 0 soit à 1.

Une composante d’une image est un sous-ensemble de l’image constituĂ© uniquement de 1 et de 0 qui sont cĂŽte Ă  cĂŽte, soit horizontalement soit verticalement.

Par exemple, les composantes de

image sont image

On souhaite, Ă  partir d’un pixel Ă©gal Ă  1 dans une image M, donner la valeur val Ă  tous les pixels de la composante Ă  laquelle appartient ce pixel.

La fonction colore_comp1 prend pour paramĂštre une image M (reprĂ©sentĂ©e par une liste de listes), deux entiers i et j et une valeur entiĂšre val. Elle met Ă  la valeur val tous les pixels de la composante du pixel M[i][j] s’il vaut 1 et ne fait rien sinon.

Par exemple, colore_comp1(M, 2, 1, 3) donne

image

Compléter le code récursif de la fonction colore_comp1 donné ci-dessous :

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
def colore_comp1(M, i, j, val):
    if M[i][j] != 1:
        return

    M[i][j] = val

    if i-1 >= 0: # propage Ă  gauche
        colore_comp1(M, i-1, j, val)
    if ... < len(M): # propage Ă  droite 
        colore_comp1(M, ..., j, val) 
    if ...: # propage en haut 
        colore_comp1(M, ..., ..., val) 
    if ...: # propage en bas 
        ...

Exemple :

🐍 Script Python
>>> M = [[0, 0, 1, 0], [0, 1, 0, 1], [1, 1, 1, 0], [0, 1, 1, 0]]
>>> colore_comp1(M, 2, 1, 3)
>>> M
[[0, 0, 1, 0], [0, 3, 0, 1], [3, 3, 3, 0], [0, 3, 3, 0]]
RĂ©ponse

Complétez le code ci-dessous

###
def colorepy-undcomp1(M, i, j, val):bksl-nl if M[i][j] != 1:bksl-nl returnbksl-nlbksl-nl M[i][j] = valbksl-nlbksl-nl if i-1 >= 0: # propage Ă  gauchebksl-nl colorepy-undcomp1(M, i-1, j, val)bksl-nl if ... < len(M): # propage Ă  droite bksl-nl colorepy-undcomp1(M, ..., j, val) bksl-nl if ...: # propage en haut bksl-nl colorepy-undcomp1(M, ..., ..., val) bksl-nl if ...: # propage en bas bksl-nl ...bksl-nl



Solution

###
def colorepy-undcomp1(M, i, j, val):bksl-nl if M[i][j] != 1:bksl-nl returnbksl-nlbksl-nl M[i][j] = valbksl-nlbksl-nl if i-1 >= 0: # propage Ă  gauchebksl-nl colorepy-undcomp1(M, i-1, j, val)bksl-nl if i+1 < len(M): # propage Ă  droite bksl-nl colorepy-undcomp1(M, i+1, j, val) bksl-nl if j-1 >= 0: # propage en haut bksl-nl colorepy-undcomp1(M, i, j-1, val) bksl-nl if j+1 < len(M): # propage en bas bksl-nl colorepy-undcomp1(M, i, j+1, val)bksl-nltry:bksl-nl M = [[0, 0, 1, 0], [0, 1, 0, 1], [1, 1, 1, 0], [0, 1, 1, 0]]bksl-nl colorepy-undcomp1(M, 2, 1, 3)bksl-nl assert M == [[0, 0, 1, 0], [0, 3, 0, 1], [3, 3, 3, 0], [0, 3, 3, 0]]bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nl