Trilhas
/
Roc
Roc
/
Exercícios
/
Dois baldes
Dois baldes

Dois baldes

Médio

Instruções

Dados dois baldes de tamanhos diferentes e qual balde encher primeiro, determine quantas ações são necessárias para medir uma quantidade exata de litros, transferindo líquido entre os baldes de forma estratégica.

Existem algumas regras que sua solução precisa seguir:

  • Você só pode fazer uma ação por vez.
  • Existem apenas 3 ações possíveis:
    1. Despejar um balde no outro até que: a) o primeiro balde fique vazio b) o segundo balde fique cheio
    2. Esvaziar um balde sem mexer no outro.
    3. Encher um balde sem mexer no outro.
  • Depois de uma ação, você não pode chegar a um estado em que o balde inicial esteja vazio e o outro balde esteja cheio.

Seu programa vai receber como entrada:

  • o tamanho do balde um
  • o tamanho do balde dois
  • a quantidade desejada de litros a alcançar
  • qual balde encher primeiro, o balde um ou o balde dois

Seu programa deve determinar:

  • o número total de ações necessárias para alcançar a quantidade desejada de litros, incluindo o primeiro enchimento do balde inicial
  • qual balde deve terminar com a quantidade desejada de litros, o balde um ou o balde dois
  • quantos litros sobram no outro balde

Observação: qualquer mudança feita em um ou nos dois 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, em um determinado passo, o balde um esteja com 7 litros e o balde dois esteja com 8 litros (7,8). Se você esvaziar o balde um e não mexer no balde dois, ficando com 0 litros e 8 litros, respectivamente (0,8), isso conta como uma ação. Já se você tivesse despejado o balde um no balde dois até o balde dois ficar cheio, ficando com 4 litros no balde um e 11 litros no balde dois (4,11), isso também contaria como apenas uma ação.

Outro exemplo: O balde um comporta 3 litros, e o balde dois comporta até 5 litros. Dizem que você deve começar pelo balde um. Então sua primeira ação é encher o balde um. Para a segunda ação, você escolhe esvaziar o balde um. Na terceira ação, você não pode encher o balde dois, porque isso viola a terceira regra: você não pode terminar, depois de qualquer ação, em um estado 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 O link abre em uma nova janela ou aba
Roc Exercism

Tudo pronto para começar Dois baldes?

Crie sua conta no Exercism para aprender e dominar Roc com 120 exercícios e mentoria humana de verdade, tudo de graça.