크레딧 @ Agawa001 이 질문에 함께 올라오고합니다.
설명
나의 새로운 "keybore"은 2 개, 즉 버튼이 +
와 -
.
메모리의 숫자는에서 시작합니다 0
.
각각의 연속을 누르 +
거나 -
의지 증가 / 감소가 연속적으로 눌렀는지 정확히 얼마나 많은 시간을 위해 메모리.
따라서 +
4 번 을 누르면 1을 처음 추가 할 때, 2를 더할 때 2를 더할 때, 3을 더할 때 3을 더할 때, 4를 더할 때 4를 더할 때 10
(10)가됩니다.
이제 -
3 번 을 누르면 처음 1을 빼고, 2를 2, 3을 3으로 빼면 4
(4)가 남습니다 .
TL; DR
+와-의 문자열이 주어질 때마다 문자를 변경할 때마다 나누십시오. 그런 다음 각 m +
개의 결과 문자열은 m 번째 삼각형 숫자를 -
더하고 n 개의 각 기호 문자열은 n 번째 삼각형 숫자를 뺍니다.
연습
당신은 여전히 이해하지 않는 경우에 지금, 나는 방법을 보여줍니다 +++--+--
생성합니다 1
.
Program | Counter | Memory
----------------------------
| 0 | 0
+ | +1 | 1
++ | +2 | 3
+++ | +3 | 6
+++- | -1 | 5
+++-- | -2 | 3
+++--+ | +1 | 4
+++--+- | -1 | 3
+++--+-- | -2 | 1
직무
- 함수 인수 또는 STDIN에서 양수를 입력으로 사용합니다.
- 그런 다음 위의 방법을 사용하여 해당 수를 만드는 데 필요한 최소 키 입력 수를 출력 / 인쇄합니다.
테스트 케이스
+
또는 -
런을 재정렬하면 동일한 번호가 지정되므로 이러한 각 그룹에 대해 사전 사전 순서 만 나열됩니다.
Input | Output | Possible corresponding sequences
-------------------------------------------------
4 | 5 | -+++-
6 | 3 | +++
9 | 5 | ++++-
11 | 7 | +++-+++
12 | 7 | +++++--, ++++-++
19 | 8 | -++++++-
39 | 12 | +++++++++---
40 | 13 | +++++++++---+, ++++++++-+++-
45 | 9 | +++++++++
97 | 20 | ++++++++++++++--+---, +++++++++++++-++++--, ++++++++++++-++++++-
361 | 34 | ++++++++++++++++++++++++++-+++-+++
추가 자료
- 임의의 숫자를 만들 수 있다는 증거 : 기본적으로를 반복하여
++-
짝수를 얻을 수 있습니다. 홀수를 얻으려면+
끝에 a 를 넣으십시오 . - 숫자를 얻는 또 다른 일반적인 방법. 예를 들어을 생성
50
하려면+
50 번을 누른 다음-
49 번 을 누르십시오 . - 처음 50 개 숫자의 해 입니다.
- 필수 JSFiddle .
채점
이것은 code-golf 입니다. 바이트 단위의 최단 솔루션이 승리합니다.
+++++--
또 다른,하지만 난 제거 ++-++++
그와 동등 이후 ++++-++
). 관리 솔루션을 사용하면 효율적인 솔루션을 제안 할 때를 대비하여 나중에 추가하고 싶은 사례가 하나 더 있습니다.
++-++++
제거 하고 싶지 않았습니다 . 또한 이것은 내 편집이 아닌 귀하의 편집입니다.
+++++--
(또는 동등하게 --+++++
) 누락되었으므로 처음부터 편집해야한다고 생각했습니다.