Choć podobne do innych puzzli niosących wodę , wyjątkowe aspekty tego wyzwania sprawiają, że jest zupełnie inny.
Beth znajduje się w oazie na środku pustyni. W jeziorze jest dużo wody, ale niestety są tylko X wiader, z których każdy ma pojemność Y litrów wody.
Beth może nosić w rękach 2 wiadra, ale aby przeżyć, musi wypić dokładnie 1 litr po każdym przejechanym kilometrze. Może też zostawić trochę wiader do połowy (woda nie odparowuje).
Wyzwanie
Wymyśl wzór i napisz najkrótsze rozwiązanie, które będzie działać dla dodatnich liczb całkowitych X i Y, i obliczyć maksymalną odległość Beth może pokonać z oazy. Dozwolone jest przenoszenie wody między wiadrami.
Przykład
X = 3, Y = 5
- Beth pozostawia 1 pełne wiadro 3 km od oazy, wraca (po ostatnim drinku z oazy)
- Beth przynosi kolejne pełne wiadro w punkcie 3 km, mając teraz 12 l.
- Beth może przejść do punktu 6 km i zostawić wiadro z 4 litrami wody.
- Wróć do punktu 3 km. Ma teraz dokładnie 2 litry, aby wrócić do oazy.
- Wypełnij wiadra i przejdź do punktu 6 km. Ma teraz 8 litrów wody.
- Kontynuuj aż do punktu 15 km.
Odpowiedź brzmi: 15
Wejście wyjście
Możesz zdefiniować X / Y bezpośrednio w kodzie lub odczytać z wejścia. Wynik można umieścić w zmiennej lub wyniku, w zależności od tego, który jest najkrótszy.