Digamos que estoy a diez pasos de mi destino. Camino allí siguiendo el viejo dicho: "Dos pasos adelante y uno atrás". Doy dos pasos hacia adelante, uno hacia atrás, hasta que estoy exactamente en mi destino. (Esto podría implicar pasar mi destino y volver a él). ¿Cuántos pasos caminé?
Por supuesto, podría no estar a 10 pasos de distancia. Podría estar a 11 pasos de distancia, o 100. Podría medir diez pasos y seguir caminando de un lado a otro para resolver el problema, o ... ¡podría escribir un código!
- Escriba una función para calcular cuántos pasos se necesitan para alejar N pasos, en la secuencia: dos pasos hacia adelante, uno hacia atrás.
- Suponga que ha comenzado en el paso 0. Cuente los "dos pasos adelante" como dos pasos, no uno.
- Suponga que todos los pasos tienen una longitud uniforme.
- Debería devolver el número de pasos que se dieron por primera vez cuando llegas a ese espacio. (Por ejemplo, a 10 pasos de distancia se necesitan 26 pasos, pero volvería a golpearlo en el paso 30). Estamos interesados en los 26.
- Usa el idioma que quieras.
- Debe aceptar cualquier entero positivo como entrada. Esto representa el paso objetivo.
- El menor número de bytes gana.
Ejemplo:
Quiero alejarme a 5 pasos:
| | | | | | <- 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
En este caso, el resultado de la función sería 11.
Resultados de ejemplo:
1 => 3
5 => 11
9 => 23
10 => 26
11 => 29
100 => 296
1000 => 2996
10000 => 29996
100000 => 299996
¡Diviértanse, golfistas!