Powiedzmy, że jestem dziesięć kroków od celu. Idę tam, kierując się starym powiedzeniem: „Dwa kroki do przodu i jeden do tyłu”. Robię dwa kroki do przodu, jeden do tyłu, aż stoję dokładnie na miejscu. (Może to obejmować przekroczenie celu i powrót do niego). Ile kroków przeszedłem?
Oczywiście może nie być 10 kroków dalej. Mogę być 11 kroków lub 100. Mógłbym zmierzyć dziesięć kroków i chodzić tam i z powrotem, aby rozwiązać problem, lub ... Mógłbym napisać kod!
- Napisz funkcję, aby obliczyć, ile kroków potrzeba, aby oddalić N kroków w sekwencji: dwa kroki do przodu, jeden krok do tyłu.
- Załóżmy, że zacząłeś od kroku 0. Policz „dwa kroki do przodu” jako dwa kroki, a nie jeden.
- Załóż, że wszystkie kroki mają jednakową długość.
- Powinien zwrócić liczbę kroków, które po raz pierwszy wykonałeś po dotarciu do tego miejsca. (Na przykład 10 kroków dalej zajmuje 26 kroków, ale uderzyłbyś go ponownie w kroku 30). Interesuje nas 26.
- Użyj dowolnego języka, który ci się podoba.
- Powinien akceptować każdą dodatnią liczbę całkowitą jako dane wejściowe. To reprezentuje krok docelowy.
- Wygrywa najmniejsza liczba bajtów.
Przykład:
Chcę dostać się 5 kroków dalej:
| | | | | | <- I'm at step 0, not yet on the grid.
| |X| | | | <- I take two steps forward, I'm on step 2: the count is 2
|X| | | | | <- I take one step back, I'm on step 1: the count is 3
| | |X| | | <- I take two steps forward, I'm on step 3: the count is 5
| |X| | | | <- I take one step back, I'm on step 2 again: the count is 6
| | | |X| | <- I take two steps forward, I'm on step 4: the count is 8
| | |X| | | <- I take one step back, I'm on step 3 again: the count is 9
| | | | |X| <- I take two steps forward, I'm on step 5: the count is 11
W takim przypadku wynikiem funkcji byłoby 11.
Przykładowe wyniki:
1 => 3
5 => 11
9 => 23
10 => 26
11 => 29
100 => 296
1000 => 2996
10000 => 29996
100000 => 299996
Miłej zabawy, golfiści!
