Voilà la version repensée. J'ai renvoyé le tri dans une fonction pour l'opérer à chaque tour.
Le tri ordonne maintenant :
- les cuves à contenu transférables dans des cuves plus petites, par capacité décroissante de cuve et dans chaque capacité par charge croissante,
- les cuves vides, par capacité croissante (et dans chaque capacité on respecte l'ordre au cas où cela ait une importance)
- les cuves dont le contenu n'est pas transférable dans des cuves plus petites sont éliminées de la liste.
A chaque tour de boucle on examine donc la possibilité de transfert de la première cuve listée vers une cuve vide répondant aux conditions dans l'ordre où elles apparaissent dans la liste.
A voir selon tests si cela cadre bien avec les spécifications...