Dos cubos

Dos cubos

Difícil

Instrucciones

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:

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

Tu programa recibirá como entrada:

  • el tamaño del cubo uno
  • el tamaño del cubo dos
  • la cantidad de litros que quieres alcanzar
  • cuál de los cubos hay que llenar primero, ya sea el cubo uno o el cubo dos

Tu programa debe determinar:

  • el número total de acciones que debe realizar para alcanzar la cantidad de litros deseada, incluido el primer llenado del cubo inicial
  • con qué cubo deberías acabar teniendo la cantidad de litros deseada: el cubo uno o el cubo dos
  • cuántos litros quedan en el otro cubo

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.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
WebAssembly Exercism

¿Listo para empezar Dos cubos?

Regístrate en Exercism para aprender y dominar WebAssembly con 87 ejercicios y mentoría humana real, todo gratis.