Étant donné deux seaux de tailles différentes et le seau à remplir en premier, détermine combien d'actions sont nécessaires pour mesurer un nombre exact de litres en transférant stratégiquement du liquide d'un seau à l'autre.
Voici quelques règles que ta solution doit respecter :
Ton programme prend en entrée :
Ton programme doit déterminer :
Remarque : toute modification apportée à l'un des seaux ou aux deux compte comme une (1) action.
Exemple : Le seau un peut contenir jusqu'à 7 litres, et le seau deux jusqu'à 11 litres. Imaginons qu'à une étape donnée, le seau un contienne 7 litres et le seau deux 8 litres (7,8). Si tu vides le seau un sans modifier le seau deux, ce qui te laisse respectivement 0 litre et 8 litres (0,8), cela compte comme une seule action. En revanche, si tu avais versé le contenu du seau un dans le seau deux jusqu'à ce que le seau deux soit plein, ce qui donne 4 litres dans le seau un et 11 litres dans le seau deux (4,11), cela ne compterait là aussi que comme une seule action.
Autre exemple : Le seau un peut contenir 3 litres, et le seau deux jusqu'à 5 litres. On te dit que tu dois commencer par le seau un. Ta première action consiste donc à remplir le seau un. Pour ta deuxième action, tu choisis de vider le seau un. Pour ta troisième action, tu ne peux pas remplir le seau deux, car cela enfreint la troisième règle : après une action, tu ne peux pas te retrouver dans un état où le seau de départ est vide et l'autre seau est plein.
Écrit avec <3 à la Fullstack Academy par Lindsay Levine.
Il est parfois nécessaire de lever une exception. Dans ce cas, il faut toujours inclure un message d'erreur explicite pour indiquer l'origine de l'erreur. Cela rend le code plus lisible et aide grandement au débogage. Lorsque tu sais que l'erreur provient d'un type précis, tu peux choisir de lever l'un des types d'erreur intégrés, mais il faut tout de même inclure un message explicite.
Cet exercice demande en particulier d'utiliser l'instruction raise pour « lever » une ValueError. Les tests ne passeront que si tu fais raise sur l'exception et que tu y ajoutes un message.
Pour lever une ValueError avec un message, écris ce message comme argument du type d'exception :
raise ValueError("A meaningful error message here.")
Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.