Rompecabezas de jarras de agua
Dado un conjunto de 3 jarras de agua con capacidades de a, b y c litros, encuentra el número mínimo de operaciones realizadas antes de que cada jarra tenga x, y y z litros. Solo la jarra C comenzará completamente llena.
Una operación es cualquiera de las siguientes: vaciar una jarra, llenar una jarra o verter agua de una jarra a otra hasta que una de las jarras esté vacía o llena.
Por ejemplo, las jarras A, B y C con capacidades de 3, 5 y 8, donde las jarras A y B comienzan vacías y C tiene los 8 litros completos, requieren 2 operaciones para alcanzar el estado de 0, 3 y 5 litros en las jarras.
Crea una función que, dado un arreglo de capacidades de jarras [A, B, C] y un arreglo de estado objetivo [x, y, z], devuelva el número mínimo de operaciones necesarias para alcanzar el estado objetivo. Si las entradas no son válidas o no existe una solución, devuelve "No solution."
Ejemplos
waterjug([3, 5, 8], [0, 3, 5]) ➞ 2
waterjug([1, 3, 4], [0, 2, 2]) ➞ 3
waterjug([8, 17, 20], [0, 10, 10]) ➞ 9
waterjug([4, 17, 22], [2, 5, 15]) ➞ "No solution."
waterjug([3, 5, 8], [0, 0, 9]) ➞ "No solution."Notas
- La cantidad de agua en una jarra nunca puede superar la capacidad de esa jarra.
- El total de litros en el estado objetivo debe ser igual a la capacidad de la jarra C.