私が目的地から10歩離れているとしましょう。「二歩前進、一歩後退」という古いことわざに従って歩きます。目的地に正確に立つまで、2歩前進します。(これには、目的地を通過してそこに戻ることが含まれる場合があります)。何歩歩きましたか?
もちろん、私は10歩離れていないかもしれません。私は11歩、つまり100歩かもしれません。10歩を測定し、問題を解決するために前後に歩き続けるか、...コードを書くことができます。
- 関数を記述して、Nステップ離れるのに必要なステップ数を順番に計算します。2ステップ前進、1ステップ後退します。
- ステップ0で開始したと仮定します。「2ステップ先」を1ステップではなく2ステップとしてカウントします。
- すべてのステップが一定の長さであると仮定します。
- そのスペースに到達したときに最初にとったステップ数を返します。(たとえば、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
ゴルファー、楽しんでください!
