문자 만 포함하는 홀수 길이 문자열에 걸리는 프로그램 작성 .
및 :
. 초기에 비어있는 stack 을 사용하여 다음과 같이이 문자열에서 숫자를 생성하십시오.
문자열의 모든 문자 c 에 대해 (왼쪽에서 오른쪽으로 이동) ...
- 경우 C는 인
.
스택 미만 2 개 요소를 가지고, 스택 (1)을 누른다. - 경우 C는 인
.
스택은 둘 개 이상의 구성 요소를 가지고, 스택에서 두 최고 값을 팝업 스택에 그 합을 누른다. - 경우 C는 인
:
스택 미만 2 개 요소가 스택에 푸시 2. - 경우 C는 인
:
스택은 둘 개 이상의 구성 요소를 가지고, 스택에서 두 최고 값을 팝업 스택에 그들의 제품을 누른다.
결과 숫자는 스택 맨 위에있는 값입니다. 프로그램은이 번호를 stdout에 인쇄해야합니다 (선택적 후행 줄 바꿈).
(작은 분석에 따르면 문자열의 길이가 고르지 않는 한 하나의 숫자 만 남았으므로이를 무시하는 것입니다. 실제로 스택에는 두 개 이상의 요소가 없습니다.)
예를 들어의 수 ::...:.:.
는 9입니다.
2 1 2 2 /______ stack just after the character below is handled
2 2 4 4 5 5 7 7 9 \
: : . . . : . : . <-- string, one character at a time
위생 검사로서 길이 1, 3 및 5의 모든 문자열에 대한 숫자는 다음과 같습니다.
. 1
: 2
... 2
..: 1
.:. 3
.:: 2
:.. 3
:.: 2
::. 4
::: 4
..... 3
....: 2
...:. 4
...:: 4
..:.. 2
..:.: 1
..::. 3
..::: 2
.:... 4
.:..: 3
.:.:. 5
.:.:: 6
.::.. 3
.::.: 2
.:::. 4
.:::: 4
:.... 4
:...: 3
:..:. 5
:..:: 6
:.:.. 3
:.:.: 2
:.::. 4
:.::: 4
::... 5
::..: 4
::.:. 6
::.:: 8
:::.. 5
:::.: 4
::::. 6
::::: 8
바이트 단위의 최단 프로그램이 이깁니다. Tiebreaker는 이전 게시물입니다.
- 당신은, 즉, 입력이 항상 유효한에만 포함 된 문자열을 가정 할 수
.
와:
길이가 홀수입니다. - 프로그램을 작성하는 대신 유효한 문자열을 받아서 생성 된 숫자를 인쇄하거나 반환하는 함수를 작성할 수 있습니다.