Deux seaux

Deux seaux

Moyen

Instructions

É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 :

  • Tu ne peux effectuer qu'une seule action à la fois.
  • Il n'y a que 3 actions possibles :
    1. Verser le contenu d'un seau dans l'autre jusqu'à ce que : a) le premier seau soit vide b) le second seau soit plein
    2. Vider un seau sans rien faire à l'autre.
    3. Remplir un seau sans rien faire à l'autre.
  • 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.

Ton programme prend en entrée :

  • la capacité du seau un
  • la capacité du seau deux
  • le nombre de litres souhaité à atteindre
  • le seau à remplir en premier, le seau un ou le seau deux

Ton programme doit déterminer :

  • le nombre total d'actions nécessaires pour atteindre le nombre de litres souhaité, en comptant le premier remplissage du seau de départ
  • quel seau doit finir avec le nombre de litres souhaité, le seau un ou le seau deux
  • combien de litres restent dans l'autre seau

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.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
YAMLScript Exercism

Prêt à commencer Deux seaux ?

Inscris-toi sur Exercism pour apprendre et maîtriser YAMLScript avec 60 exercices, et un vrai mentorat humain, le tout gratuitement.