Les cruches#
Soient deux cruches de capacités respectives 5 et 7 litres. Ces cruches ne sont pas graduées. Vous avez accès à un robinet qui vous permet de remplir à tout moment l’une ou l’autre des cruches:
remplir(0)
remplir(1)
De même, vous disposez d’une évacuation d’eau permettant de vider l’une ou l’autre des cruches:
vider(0)
vider(1)
Enfin, vous pouvez transvaser le contenu de la première cruche dans la seconde, et réciproquement:
verser(0)
verser(1)
Et c’est tout.
from ipywidgets_game_jugs.__global__.fr import *
CRUCHES(5, 7)
Écrire un programme de sorte que l’une ou l’autre des cruches contienne 4 litres à la fin. Noter que, dans cette feuille, le programme doit être écrit en Python, mais ici cela ne change pas grand chose.
vider(0)
vider(1)
### BEGIN SOLUTION
remplir(1)
verser(1)
vider(0)
verser(1)
remplir(1)
verser(1)
### END SOLUTION
assert valides()[4]
Compléter le programme pour que tous les volumes entre 1 et 7 soient atteints:
### BEGIN SOLUTION
vider(0)
vider(1)
remplir(1)
verser(1)
vider(0)
verser(1)
remplir(1)
verser(1)
vider(0)
verser(1)
remplir(1)
verser(1)
vider(0)
verser(1)
vider(0)
verser(1)
remplir(1)
verser(1)
### END SOLUTION
assert all(valides())
Pour aller plus loin:#
Dans une nouvelle feuille de travail:
essayez avec des cruches de tailles différentes
est-il toujours possible d’obtenir n’importe quel volume?
écrire un algorithme qui, étant donné deux cruches de capacités quelconques, détermine et obtienne tous les volumes possibles.