Trouver d'autres systèmes de pièces où le glouton échoue
Exercice d'entraînement · niveau 2 · NSI (première), chapitre 8 — Dichotomie, voisins et gloutons · Gloutons : jusqu'où ?
Énoncé
Trouver d'autres systèmes de pièces où le glouton échoue. Que donne le système américain [25, 10, 5, 1] ? et [25, 10, 1], sans la pièce de ?
Corrigé
def glouton_optimal_partout(pieces, jusqua=60):
return all(len(rendu_monnaie(s, pieces)) == rendu_exhaustif(s, pieces)
for s in range(1, jusqua + 1))
assert glouton_optimal_partout(EURO)
assert glouton_optimal_partout([25, 10, 5, 1]) # systeme americain
assert not glouton_optimal_partout([6, 4, 1])
assert not glouton_optimal_partout([25, 10, 1]) # sans la piece de 5
Le contre-exemple américain est spectaculaire.
assert len(rendu_monnaie(30, [25, 10, 1])) == 6 # 25 + 1 + 1 + 1 + 1 + 1
assert rendu_exhaustif(30, [25, 10, 1]) == 3 # 10 + 10 + 10
Six pièces contre trois, pour trente cents. Retirer une seule valeur d'un système canonique suffit à le faire cesser de l'être : la propriété tient au jeu tout entier, pas à chaque pièce prise isolément.
Une famille entière de mauvais systèmes.
mauvais = [p for p in range(3, 12)
if not glouton_optimal_partout(sorted([p, p - 1, 1], reverse=True))]
assert mauvais == [4, 5, 6, 7, 8, 9, 10, 11]
Les systèmes échouent pour tout de à : deux pièces de valent presque , et le glouton, qui a pris un , doit compléter à l'unité. Les systèmes où le glouton fonctionne ne sont donc pas la règle — ce sont des systèmes choisis.
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.