Dados dos cubos de distinto tamaño y cuál de los dos hay que llenar primero, determina cuántas acciones se necesitan para medir una cantidad exacta de litros transfiriendo líquido de forma estratégica entre los cubos.
Hay algunas reglas que tu solución debe seguir:
Tu programa recibirá como entrada:
Tu programa debe determinar:
Nota: cualquier cambio que se haga en uno o en ambos cubos cuenta como una (1) acción.
Ejemplo: El cubo uno puede contener hasta 7 litros, y el cubo dos puede contener hasta 11 litros. Supongamos que, en un paso dado, el cubo uno contiene 7 litros y el cubo dos contiene 8 litros (7,8). Si vacías el cubo uno y no cambias nada en el cubo dos, de modo que te quedan 0 litros y 8 litros respectivamente (0,8), eso cuenta como una acción. En cambio, si hubieras vertido del cubo uno al cubo dos hasta que el cubo dos estuviera lleno, con el resultado de 4 litros en el cubo uno y 11 litros en el cubo dos (4,11), eso también contaría solo como una acción.
Otro ejemplo: El cubo uno puede contener 3 litros, y el cubo dos puede contener hasta 5 litros. Se te dice que debes empezar con el cubo uno. Así que tu primera acción es llenar el cubo uno. Eliges vaciar el cubo uno como segunda acción. Para tu tercera acción, no puedes llenar el cubo dos, porque esto incumple la tercera regla: no puedes acabar, después de ninguna acción, en un estado en el que el cubo inicial esté vacío y el otro cubo esté lleno.
Escrito con <3 en Fullstack Academy por Lindsay Levine.
En el paquete twobucket, implementa una función de Go, Solve, con la siguiente firma:
func Solve(sizeBucketOne,
sizeBucketTwo, goalAmount int, startBucket string,
) (goalBucket string, numSteps, otherBucketLevel int, e error)
Solve devuelve cuatro valores: el cubo objetivo resultante («one» o «two»), el número de movimientos o pasos para alcanzar la cantidad objetivo, los litros que quedan en el otro cubo y un valor de error. Devuelve un error si algún parámetro no es válido o si no es posible ninguna solución.
Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.