Disons que je suis à dix pas de ma destination. J'y marche en suivant le vieil adage "deux pas en avant et un pas en arrière". Je fais deux pas en avant, un en arrière, jusqu'à ce que je me tienne exactement sur ma destination. (Cela peut impliquer de dépasser ma destination et d'y revenir). Combien de pas ai-je parcourus?
Bien sûr, je ne serais peut-être pas à 10 pas. Je pourrais être à 11 pas ou 100. Je pourrais mesurer dix pas et continuer à marcher d'avant en arrière pour résoudre le problème, ou ... je pourrais écrire du code!
- Écrivez une fonction pour déterminer le nombre d'étapes nécessaires pour obtenir N étapes, dans l'ordre: deux pas en avant, un pas en arrière.
- Supposons que vous avez commencé à l'étape 0. Comptez les «deux pas en avant» comme deux pas, pas un.
- Supposons que toutes les étapes ont une longueur uniforme.
- Il doit renvoyer le nombre de pas effectués en premier lorsque vous atteignez cet espace. (Par exemple, à 10 pas, cela prend 26 pas, mais vous le frapperiez à nouveau à l'étape 30). Nous nous intéressons au 26.
- Utilisez n'importe quelle langue que vous aimez.
- Il doit accepter tout entier positif en entrée. Cela représente l'étape cible.
- Le plus petit nombre d'octets gagne.
Exemple:
Je veux m'éloigner de 5 pas:
| | | | | | <- 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
Dans ce cas, le résultat de la fonction serait 11.
Exemples de résultats:
1 => 3
5 => 11
9 => 23
10 => 26
11 => 29
100 => 296
1000 => 2996
10000 => 29996
100000 => 299996
Amusez-vous, golfeurs!