Dois Baldes

Dois Baldes

Médio

Instruções

Dados dois baldes de tamanhos diferentes e qual o balde a encher primeiro, determina quantas ações são necessárias para medir um número exato de litros, transferindo estrategicamente fluido entre os baldes.

Há algumas regras que a tua solução tem de seguir:

  • Só podes fazer uma ação de cada vez.
  • Há apenas 3 ações possíveis:
    1. Verter um balde para o outro balde até que: a) o primeiro balde esteja vazio b) o segundo balde esteja cheio
    2. Esvaziar um balde e não fazer nada ao outro.
    3. Encher um balde e não fazer nada ao outro.
  • Após uma ação, não podes chegar a um estado em que o balde inicial esteja vazio e o outro balde esteja cheio.

O teu programa recebe como entrada:

  • o tamanho do balde um
  • o tamanho do balde dois
  • o número desejado de litros a atingir
  • qual balde encher primeiro, o balde um ou o balde dois

O teu programa deve determinar:

  • o número total de ações que deve realizar para atingir o número desejado de litros, incluindo o primeiro enchimento do balde inicial
  • qual balde deve ficar com o número desejado de litros, o balde um ou o balde dois
  • quantos litros sobram no outro balde

Nota: qualquer alteração feita a um ou a ambos os baldes conta como uma (1) ação.

Exemplo: O balde um comporta até 7 litros, e o balde dois comporta até 11 litros. Digamos que, num determinado passo, o balde um tem 7 litros e o balde dois tem 8 litros (7,8). Se esvaziares o balde um e não alterares o balde dois, ficando com 0 litros e 8 litros respetivamente (0,8), isso conta como uma ação. Em vez disso, se tivesses vertido do balde um para o balde dois até o balde dois ficar cheio, resultando em 4 litros no balde um e 11 litros no balde dois (4,11), isso também contaria apenas como uma ação.

Outro exemplo: O balde um comporta 3 litros, e o balde dois comporta até 5 litros. Dizem-te que tens de começar com o balde um. Portanto, a tua primeira ação é encher o balde um. Escolhes esvaziar o balde um para a tua segunda ação. Para a tua terceira ação, não podes encher o balde dois, porque isso viola a terceira regra: não podes chegar a um estado, após qualquer ação, em que o balde inicial esteja vazio e o outro balde esteja cheio.

Escrito com <3 na Fullstack Academy por Lindsay Levine.

Editar via GitHub A ligação abre numa nova janela ou separador
Wren Exercism

Estás pronto para começar Dois Baldes?

Inscreve-te no Exercism para aprenderes e dominares Wren com 117 exercícios, e mentoria humana real, tudo grátis.