Скажімо, я в десяти кроках від місця призначення. Я йду туди, дотримуючись старої приказки: «Два кроки вперед і один крок назад». Я роблю два кроки вперед, один назад, поки я точно не став на місце призначення. (Це може передбачати проходження повз мого пункту призначення та повернення до нього). Скільки кроків я пройшов?
Звичайно, я не можу бути за 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
Веселіться, гольфісти!