Bien que semblable à l'autre puzzle transportant de l'eau , les aspects uniques de ce défi le rendent entièrement différent.
Beth est située dans une oasis au milieu d'un désert. Il y a beaucoup d'eau dans le lac, mais malheureusement il n'y a que X seaux, chacun ayant une capacité de Y litres d'eau.
Beth peut porter 2 seaux dans ses mains, mais pour survivre, elle doit boire exactement 1 litre après chaque kilomètre parcouru. Elle peut également laisser des seaux à mi-chemin (l'eau ne s'évapore pas).
Le défi
Calculez la formule et écrivez la solution la plus courte qui fonctionnera pour les valeurs entières positives de X et Y et calculez la distance maximale que Beth peut parcourir depuis l'oasis. Il est permis de déplacer l'eau entre les seaux.
Exemple
X = 3, Y = 5
- Beth quitte 1 seau plein à 3 km de l'oasis, revient (ayant le dernier verre de l'oasis)
- Beth apporte un autre seau plein au point 3KM, ayant 12L là maintenant.
- Beth peut avancer jusqu'au point 6KM et laisser le seau avec 4L d'eau dedans.
- Revenez au point 3KM. Elle a maintenant exactement 2L pour retourner à l'oasis.
- Remplissez des seaux et voyagez jusqu'à 6 km. Elle a maintenant 8L d'eau.
- Continuez jusqu'au point 15KM.
La réponse est: 15
Entrée sortie
Vous pouvez définir X / Y directement dans le code ou lire à partir de l'entrée. Le résultat peut être placé dans une variable ou une sortie, selon la plus courte des deux.
la source
Réponses:
JavaScript (ES6), 25 octets
Tous ces éléments calculent la même valeur; Je n'arrive pas à trouver une formulation plus courte.
Quand
x
est inférieur à3
, vous prenez autant d'eau que possible et marchez aussi loin que possible, ce qui est tout simplementx*y+1
.Quand
x
est au moins 3, vous devez commencer à construire des caches.De l'oasis, vous pouvez laisser un seau plein à distance
y/2
et retourner à l'oasis. Pour ce faire, vous avez besoin de 2 seaux, mais cela n'est pas utile si vous n'avez que 2 seaux car vous voulez pouvoir remplir 2 seaux lorsque vous revenez à l'oasis.De l'oasis, avec un seau à distance
y/2
, vous pouvez laisser un seau plein à distancey
et retourner à l'oasis. Vous avez besoin de 3 seaux pour ce faire.De l'oasis, avec des seaux pleins aux deux
y
ety/2
, vous pouvez laisser un seau plein à distance3y/2
et retourner à l'oasis. Pour ce faire, vous avez besoin de 4 seaux. Vous devez ensuite laisser un seau plein à distancey/2
et retourner à l'oasis.Finalement, vous pouvez vous retrouver avec un seau plein à
(x-1)y/2
. (Vous ne pouvez pas laisser un seau pleinxy/2
car vous ne pourriez pas retourner à l'oasis, comme le voyage aller-retourxy
, la capacité totale des seaux.)En utilisant vos seaux restants, vous pouvez laisser des seaux pleins à
(x-3)y/2
...y
ouy/2
. À ce stade, vous marchez aussi loin que possible, ramassant vos seaux pleins au fur et à mesure. Lorsque vous atteignez, il(x-1)y/2
vous reste encore deux seaux pleins, vous permettant d'atteindre(x+3)y/2
.Le plus
1
vient de la bizarrerie des règles vous permettant de parcourir votre dernier kilomètre sans avoir d'eau. Bien que l'exemple montre que vous pouvez laisser les seaux un peu plus loin que décrit ci-dessus, cela ne vous aide pas à marcher plus loin, car vous devez soit laisser moins d'eau ou boire l'eau du seau lorsque vous l'atteignez avant de pouvoir vous déplacer sur.la source