Digamos que estou a dez passos do meu destino. Eu ando lá seguindo o velho ditado, "Dois passos à frente e um passo atrás". Dou dois passos à frente, um atrás, até estar exatamente no meu destino. (Isso pode envolver ultrapassar meu destino e retornar a ele). Quantos passos eu andei?
Claro, talvez eu não esteja a 10 passos de distância. Eu posso estar a 11 passos, ou 100. Eu poderia medir dez passos e continuar andando para frente e para trás para resolver o problema, ou ... Eu poderia escrever algum código!
- Escreva uma função para calcular quantos passos são necessários para afastar N passos, na sequência: dois passos adiante, um passo atrás.
- Suponha que você tenha começado na etapa 0. Conte os "dois passos à frente" como dois passos, não um.
- Suponha que todas as etapas tenham um comprimento uniforme.
- Ele deve retornar o número de etapas executadas pela primeira vez quando você alcança esse espaço. (Por exemplo, 10 passos de distância levam 26 passos, mas você o alcançaria novamente no passo 30). Estamos interessados nos 26.
- Use qualquer idioma que você quiser.
- Ele deve aceitar qualquer número inteiro positivo como entrada. Isso representa a etapa de destino.
- Menor número de bytes ganhos.
Exemplo:
Quero dar 5 passos:
| | | | | | <- 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
Nesse caso, o resultado da função seria 11.
Resultados de exemplo:
1 => 3
5 => 11
9 => 23
10 => 26
11 => 29
100 => 296
1000 => 2996
10000 => 29996
100000 => 299996
Divirta-se, golfistas!