단항 숫자는 일반적으로 음이 아닌 정수만 나타내지 만 다음과 같이 모든 정수를 나타내도록 확장 할 수 있습니다.
- 양의 정수 N은 N으로 표시됩니다
1
.5 -> 11111
- 음의 정수 -N은
0
뒤에 N 으로 표시됩니다1
.-5 -> 011111
- 0은 다음과 같이 표현됩니다
0
그런 다음 0
구분자로 사용하면 이러한 숫자의 목록을 명확하게 나타낼 수 있습니다 .
3,-2,0,1
111,011,0,1
111 0 011 0 0 0 1
11100110001
당신의 작업 : 그런 부호있는 단항 목록을 나타내는 문자열을 가져 와서 십진수 목록으로 변환하십시오.
세부
입력이 부호있는 단항 숫자의 전체 목록이라고 가정 할 수 있습니다. 특히, 프로그램은 1) 빈 입력 또는 2) 구분자로 끝나는 입력을 처리 할 필요가 없습니다.
각 숫자의 크기가 127을 초과하지 않는다고 가정 할 수 있습니다. 최대 크기의 문자열 또는 목록을 가진 언어의 경우 입력 및 출력이 언어의 데이터 구조에 적합하다고 가정 할 수 있지만 알고리즘은 이론적으로 어떤 크기.
프로그램이나 기능은 표준 방법으로 I / O를 수행 할 수 있습니다 . 입력은 문자열 또는 문자 목록, 단일 문자 문자열, 정수 또는 부울 일 수 있습니다. 당신은 표현하기 위해 두 문자를 사용할 수 있습니다 1
및 0
; 사용하지 않는 경우 1
와 0
, 당신이 사용중인 문자를 지정하십시오.
출력은 합리적인 목록 형식의 10 진수 여야합니다 (특히 숫자 사이에 일종의 구분 기호가 있어야 함). 음수는 빼기 부호로 표시해야합니다. 언어가 음수 정수의 형식이 다른 경우에도 허용됩니다. 출력에서 0은 0
또는 로 표시 될 수 있습니다 -0
.
테스트 사례
1 -> 1
0 -> 0 (or -0, and similarly for the other test cases)
011 -> -2
1101 -> 2,1
1100 -> 2,0
11001 -> 2,-1
110001 -> 2,0,1
11100110001 -> 3,-2,0,1
00000001 -> 0,0,0,-1
01111011111111001111111111111110111111111111111100111111111111111111111110111111111111111111111111111111111111111111 -> -4,8,-15,16,-23,42
01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 -> -127
0
)와 음수 접두사 ( 0
)가 동일하지만 숫자 중간에 음수 부호를 가질 수 없기 때문에 여전히 명확하지는 않습니다 ( 182--693-1
숫자입니까? 1111011000101111
똑같은 이유 도 아닙니다 ).
'0's
기술적으로 단조롭지 않습니다. 그래도 좋은 도전입니다!