假设我距离目的地十步之遥。我按照古老的谚语“向前走两步,向后退一步”走到那里。我向前走了两步,向后走了一步,直到我正好站在目的地上。(这可能涉及跨过我的目的地,然后返回目的地)。我走了几步?
当然,我可能还没有十步之遥。我可能只有11步之遥,或者是100步。我可以测量10个步伐,并继续来回走动以解决问题,或者...我可以编写一些代码!
- 编写一个函数,计算出要走N步要走多少步,顺序为:向前两步,向后一步。
- 假设您已从步骤0开始。将“向前两步”算作两步,而不是一步。
- 假设所有步骤都是统一的长度。
- 它应该返回到达该空间时首先执行的步骤数。(例如,距离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
玩得开心,高尔夫球手!