Допустим, я в десяти шагах от пункта назначения. Я иду туда, следуя старой поговорке: «Два шага вперед и один шаг назад». Я делаю два шага вперед, один назад, пока не стою точно на своем месте назначения. (Это может потребовать пройти мимо моего пункта назначения и вернуться к нему). Сколько шагов я прошел?
Конечно, я не могу быть в 10 шагах. Я мог бы быть в 11 шагах или 100. Я мог бы измерить десять шагов и продолжать идти вперед и назад, чтобы решить проблему, или ... Я мог бы написать какой-нибудь код!
- Напишите функцию, чтобы определить, сколько шагов нужно сделать, чтобы получить N шагов в последовательности: два шага вперед, один шаг назад.
- Предположим, вы начали с шага 0. Считайте «два шага вперед» как два шага, а не один.
- Предположим, что все шаги имеют одинаковую длину.
- Он должен возвращать количество шагов, которые были сделаны первым, когда вы дойдете до этого места. (Например, в 10 шагах нужно сделать 26 шагов, но вы снова нажмете на 30). Мы заинтересованы в 26.
- Используйте любой язык, который вам нравится.
- Он должен принимать любое положительное целое число в качестве входных данных. Это представляет собой целевой шаг.
- Наименьшее количество байтов побеждает.
Пример:
Я хочу сделать 5 шагов:
| | | | | | <- 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
В этом случае результат функции будет 11.
Пример результатов:
1 => 3
5 => 11
9 => 23
10 => 26
11 => 29
100 => 296
1000 => 2996
10000 => 29996
100000 => 299996
Веселитесь, игроки в гольф!