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:
Seu programa vai receber como entrada:
Seu programa deve determinar:
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.
Crie sua conta no Exercism para aprender e dominar Prolog com 109 exercícios e mentoria humana de verdade, tudo de graça.