Nehmen wir an, ich bin zehn Schritte von meinem Ziel entfernt. Ich gehe dorthin und folge dem alten Sprichwort: "Zwei Schritte vorwärts und einen Schritt zurück". Ich mache zwei Schritte vorwärts und einen zurück, bis ich genau an meinem Ziel stehe. (Dies kann bedeuten, dass ich an meinem Ziel vorbeigehe und dorthin zurückkehre). Wie viele Schritte bin ich gegangen?
Natürlich bin ich vielleicht nicht 10 Schritte entfernt. Ich könnte 11 Schritte oder 100 entfernt sein. Ich könnte zehn Schritte messen und weiter hin und her gehen, um das Problem zu lösen, oder ... ich könnte einen Code schreiben!
- Schreiben Sie eine Funktion, um herauszufinden, wie viele Schritte erforderlich sind, um N Schritte in der folgenden Reihenfolge zu entfernen: zwei Schritte vorwärts, einen Schritt zurück.
- Angenommen, Sie haben bei Schritt 0 begonnen. Zählen Sie die "zwei Schritte vorwärts" als zwei Schritte, nicht als einen.
- Angenommen, alle Schritte haben eine einheitliche Länge.
- Es sollte die Anzahl der Schritte zurückgeben, die zuerst ausgeführt wurden, wenn Sie dieses Feld erreichen. (Zum Beispiel sind 10 Schritte entfernt 26 Schritte, aber Sie würden es in Schritt 30 erneut treffen). Wir interessieren uns für die 26.
- Verwenden Sie eine beliebige Sprache.
- Es sollte eine positive ganze Zahl als Eingabe akzeptieren. Dies ist der Zielschritt.
- Die kleinste Anzahl von Bytes gewinnt.
Beispiel:
Ich möchte 5 Schritte entfernt sein:
| | | | | | <- 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
In diesem Fall wäre das Ergebnis der Funktion 11.
Beispielergebnisse:
1 => 3
5 => 11
9 => 23
10 => 26
11 => 29
100 => 296
1000 => 2996
10000 => 29996
100000 => 299996
Viel Spaß, Golfer!