Exercices Fonctions & Modules Decorateur de cache (memoization)
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

Decorateur de cache (memoization)

La memoization est une technique d'optimisation qui consiste a stocker les résultats d'appels précédents pour eviter de recalculer. C'est comme prendre des notes : au lieu de refaire un calcul, tu regardes dans tes notes si tu l'as deja fait.

L'idee est simple : tu utilises un dictionnaire ou les clés sont les arguments et les valeurs sont les résultats. Avant d'appeler la fonction, tu vérifies si les arguments sont deja dans le dictionnaire.

Écris un decorateur cache qui memorise les résultats des appels précédents. Si la fonction est appelee avec les memes arguments, le decorateur renvoie le résultat stocke au lieu de recalculer.

Le wrapper doit avoir un attribut .cache (le dictionnaire) pour qu'on puisse l'inspecter.

Exemple :
@cache
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)

fibonacci(10) renvoie 55
fibonacci.cache contient les résultats précédents

Tests (3/4)

Résultat correct
@cache
def carre(x):
    return x ** 2
assert carre(5) == 25
Cache rempli
@cache
def carre(x):
    return x ** 2
carre(3)
carre(4)
assert (3,) in carre.cache
assert (4,) in carre.cache
Fibonacci rapide
@cache
def fib(n):
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)
assert fib(10) == 55

+ 0 tests cachés

Indices (3 disponibles)

solution.py