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:
O teu programa recebe como entrada:
O teu programa deve determinar:
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.
Inscreve-te no Exercism para aprenderes e dominares Prolog com 109 exercícios, e mentoria humana real, tudo grátis.