목적지에서 10 걸음 떨어진 곳에 있다고 가정하겠습니다. 나는 “두 걸음 앞으로 한 걸음 뒤로”라는 옛말에 따라 거기를 걷습니다. 목적지에 정확히 서있을 때까지 한 걸음 뒤로 두 단계 앞으로 나아갑니다. (여기에는 목적지를 건너서 돌아 오는 것이 포함될 수 있습니다). 몇 걸음 걸었습니까?
물론, 나는 10 걸음 떨어져 있지 않을 수도 있습니다. 11 걸음 또는 100 걸음 거리에 있습니다. 10 단계를 측정하고 문제를 해결하기 위해 앞뒤로 계속 걸어 갈 수 있습니다. 또는 … 코드를 작성할 수 있습니다!
- 순서대로 N 단계를 제거하는 데 걸리는 단계 수를 계산하는 함수를 작성하십시오. 두 단계 앞으로, 한 단계 뒤로.
- 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
골퍼들!
답변
오아시스 , 5 4 바이트
@Adnan 덕분에 1 바이트 절약
3+23
혼동하지 마십시오 23+3
어떻게?
implicitly push a(n-1)
3 push 3
+ sum and implicitly print
2 a(2) = 2
3 a(1) = 3
답변
답변
답변
답변
폴리 글롯 : Java 8 / JavaScript / C # .NET, 16 14 12 bytes
n->3*n-1%n*4
n=>3*n-1%n*4
온라인으로 사용해보십시오 (자바 스크립트).
온라인으로 사용해보십시오 (C # .NET) .
@Lynn 의 Python 2 답변 포트 이므로 답변 을 올리십시오.
오래된 답변 :
폴리 글롯 : Java 8 / JavaScript / C # .NET, 16 14 바이트
n->n<2?3:n*3-4
n=>n<2?3:n*3-4
온라인으로 사용해보십시오 (자바 스크립트).
온라인으로 사용해보십시오 (C # .NET) .
설명:
n-> // Method with integer as both parameter and return-type
n<2? // If the input is 1:
3 // Return 3
: // Else:
n*3-4 // Return the input multiplied by 3, and subtract 4