Tracks
/
C++
C++
/
Ejercicios
/
Dos baldes
Dos baldes

Dos baldes

Intermedia

Instrucciones

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:

  • Solo puedes hacer una acción a la vez.
  • Solo hay 3 acciones posibles:
    1. Verter un balde dentro del otro hasta que: a) el primer balde quede vacío b) el segundo balde quede lleno
    2. Vaciar un balde sin hacer nada con el otro.
    3. Llenar un balde sin hacer nada con el otro.
  • Después de una acción, no puedes llegar a un estado en el que el balde inicial esté vacío y el otro balde esté lleno.

Tu programa recibirá como entrada:

  • el tamaño del balde uno
  • el tamaño del balde dos
  • la cantidad deseada de litros que se debe alcanzar
  • cuál balde llenar primero, ya sea el balde uno o el balde dos

Tu programa debe determinar:

  • la cantidad total de acciones que se deben realizar para alcanzar la cantidad deseada de litros, incluido el primer llenado del balde inicial
  • cuál balde debe terminar con la cantidad deseada de litros, ya sea el balde uno o el balde dos
  • cuántos litros quedan en el otro balde

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.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
C++ Exercism

¿Todo listo para empezar Dos baldes?

Regístrate en Exercism para aprender y dominar C++ con 19 conceptos100 ejercicios y mentoría humana real, todo gratis.