Le test de propriété
Exercice · informatique (tronc commun des prépas scientifiques), chapitre 1 — La discipline de programmation
Énoncé
Proposer une fonction de test de propriété verifie(t, r) validant que la liste r est une version triée acceptable de la liste t, puis écrire un protocole de test sur des listes aléatoires.
Corrigé
La postcondition d'une fonction de tri comporte deux clauses indépendantes : la liste finale doit être ordonnée, et elle doit contenir exactement les mêmes éléments que la liste de départ.
def verifie(t: list, r: list) -> bool:
# 1. Vérification du caractère croissant
croissante = all(r[i] <= r[i+1] for i in range(len(r) - 1))
# 2. Vérification de la conservation des éléments (en utilisant les listes triées de référence)
memes_elements = sorted(t) == sorted(r)
return croissante and memes_elements
# Protocole de test de propriété aléatoire
import random
for essai in range(1000):
# Génération d'une liste de taille et de valeurs aléatoires
taille = random.randint(0, 30)
t = [random.randint(-50, 50) for _ in range(taille)]
# On suppose que 'tri' est la fonction à tester
resultat = tri(t)
assert verifie(t, resultat), f"Échec pour la liste d'entrée : {t}"Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.