>VerseTrainer

18. Chaîne de fabrication

difficile
mapséchecrécursion

Un artisan veut fabriquer un objet. S'il a déjà l'objet en stock (quantité > 0), c'est bon. Sinon, une table de recettes indique, pour certains objets, quel ingrédient il faut d'abord obtenir (une chaîne de fabrication : par exemple une Épée nécessite un Lingot, qui nécessite du Minerai). Écris une fonction récursive CanCraft qui remonte la chaîne jusqu'à trouver un ingrédient déjà en stock, ou renvoie false si la chaîne s'arrête sans rien trouver.

Exemple

CanCraft({"Ore": 5}, {"Sword": "Ingot", "Ingot": "Ore"}, "Sword") renvoie true (Épée → Lingot → Minerai, et il y a du Minerai en stock). CanCraft({"Wood": 2}, {"Sword": "Ingot", "Ingot": "Ore"}, "Sword") renvoie false (la chaîne remonte jusqu'à Minerai, qui n'a pas de recette et n'est pas en stock).

Indices

Chargement de l'éditeur…