Dados dos baldes de diferente tamaño y cuál balde llenar primero, determina cuántas acciones se requieren para medir una cantidad exacta de litros transfiriendo estratégicamente líquido entre los baldes.
Hay algunas reglas que tu solución debe seguir:
Tu programa recibirá como entrada:
Tu programa debe determinar:
Nota: cada vez que se hace un cambio en uno o ambos baldes cuenta como una (1) acción.
Ejemplo: El balde uno puede contener hasta 7 litros, y el balde dos puede contener hasta 11 litros. Digamos que en un paso dado, el balde uno contiene 7 litros y el balde dos contiene 8 litros (7,8). Si vacías el balde uno y no haces ningún cambio en el balde dos, dejándote con 0 litros y 8 litros respectivamente (0,8), eso cuenta como una acción. En cambio, si hubieras vertido del balde uno al balde dos hasta que el balde dos quedara lleno, con lo que resultarían 4 litros en el balde uno y 11 litros en el balde dos (4,11), eso también contaría como una sola acción.
Otro ejemplo: El balde uno puede contener 3 litros, y el balde dos puede contener hasta 5 litros. Se te dice que debes comenzar con el balde uno. Así que tu primera acción es llenar el balde uno. Eliges vaciar el balde uno como tu segunda acción. Para tu tercera acción, no puedes llenar el balde dos, porque esto viola la tercera regla: no puedes terminar en un estado, después de cualquier acción, en el que el balde inicial esté vacío y el otro balde esté lleno.
Escrito con <3 en Fullstack Academy por Lindsay Levine.
A veces es necesario lanzar una excepción. Cuando lo hagas, siempre debes incluir un mensaje de error significativo que indique cuál es el origen del error. Esto hace que tu código sea más legible y facilita muchísimo la depuración. En los casos en los que sepas que el origen del error será de un tipo determinado, puedes optar por lanzar uno de los tipos de error integrados, pero aun así debes incluir un mensaje significativo.
Este ejercicio en particular requiere que uses la sentencia raise para «lanzar» un ValueError. Las pruebas solo pasarán si haces raise de la exception y además incluyes un mensaje con ella.
Para lanzar un ValueError con un mensaje, escribe el mensaje como un argumento del tipo exception:
raise ValueError("A meaningful error message here.")
Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.