# Code für die Funktion cache schreiben. Es ist ein Dekorator, der
# sich merken soll, was die dekorierte Funktion zurückgegeben hat, und
# den gespeicherten Wert bei wiederholtem Aufruf mit denselben Argumenten
# zurückgeben soll.
#
# Es kann angenommen werden, dass alle Argumente hashbar sind.
# Nur die Standardbibliothek von Python verwenden.
def cache(func):
raise NotImplementedError
calls = {"count": 0}
@cache
def add(a, b):
calls["count"] += 1
return a + b
assert add(1, 2) == 3
assert calls["count"] == 1
assert add(1, 2) == 3
assert calls["count"] == 1
assert add(2, 3) == 5
assert calls["count"] == 2
print("OK")