Embora parecido com o outro quebra-cabeça de transporte de água , os aspectos únicos desse desafio o tornam totalmente diferente.
Beth está localizada em um oásis no meio de um deserto. Há muita água no lago, mas infelizmente existem apenas X baldes, cada um dos quais com capacidade para litros de água.
Beth pode carregar 2 baldes nas mãos, mas para sobreviver, ela deve beber exatamente 1 litro após cada quilômetro percorrido. Ela também pode deixar alguns baldes até a metade (a água não evapora).
O desafio
Descubra a fórmula e escreva a solução mais curta que funcionará para valores inteiros positivos de X e Y e calcule a distância máxima que Beth pode percorrer do oásis. É permitido mover água entre os baldes.
Exemplo
X = 3, Y = 5
- Beth deixa 1 balde cheio a 3 km do oásis e volta (tomando a última bebida do oásis)
- Beth traz outro balde cheio no ponto 3KM, tendo 12L lá agora.
- Beth pode avançar para o ponto 6KM e deixar um balde com 4L de água.
- Volte ao ponto 3KM. Ela agora tem exatamente 2 litros para voltar ao oásis.
- Encha as caçambas e viaje até o ponto 6KM. Ela agora tem 8 litros de água.
- Continue até o ponto de 15 km.
Resposta é: 15
Entrada / Saída
Você pode definir X / Y diretamente no código ou ler da entrada. O resultado pode ser colocado na variável ou na saída, o que for menor.
fonte
Respostas:
JavaScript (ES6), 25 bytes
Tudo isso calcula o mesmo valor; Não consigo pensar em uma formulação mais curta.
Quando
x
é menor3
, você pega o máximo de água possível e caminha o mais longe possível, o que é simplesx*y+1
.Quando
x
é pelo menos 3, você deve começar a criar caches.Do oásis, você pode deixar um balde cheio à distância
y/2
e retornar ao oásis. Você precisa de 2 baldes para fazer isso, mas isso não é útil se você tiver apenas 2 baldes, porque deseja poder encher 2 baldes quando retornar ao oásis.No oásis, com um balde à distância
y/2
, você pode deixá-lo à distânciay
e retornar ao oásis. Você precisa de 3 baldes para fazer isso.Do oásis, com baldes cheios em ambos
y
ey/2
, você pode deixar um balde cheio à distância3y/2
e retornar ao oásis. Você precisa de 4 baldes para fazer isso. Você então precisa deixar um balde cheio a uma distânciay/2
e retornar ao oásis.Eventualmente, você pode acabar com um balde cheio em
(x-1)y/2
. (Você não pode deixar um balde cheioxy/2
porque não seria capaz de voltar ao oásis, pois a ida e volta éxy
a capacidade total dos baldes.)Usando seus baldes restantes, você pode deixar baldes cheios em
(x-3)y/2
...y
ouy/2
. Nesse ponto, você simplesmente caminha o mais longe que pode, pegando seus baldes cheios à medida que avança. Quando você chega,(x-1)y/2
ainda tem dois baldes cheios, o que lhe permite chegar(x+3)y/2
.O extra
1
vem da peculiaridade das regras, permitindo que você ande sua última milha sem ter água. Embora o exemplo mostre que você pode deixar os baldes um pouco mais afastados do que o descrito acima, isso na verdade não ajuda a caminhar mais, pois você precisa deixar menos água ou beber a água do balde ao alcançá-lo antes de poder se mover em.fonte