공백이 아닌 문자 문자열을 통과하는 프로그램을 작성하십시오 (자릿수는 0
~ 이라고 가정 할 수 9
있지만 처리 방법은 이에 따라 달라집니다). 다음 규칙에 따라 공백을 추가하십시오.
- 현재 토큰을 빈 문자열로, 이전에 방출 된 토큰을 빈 세트로 둡니다.
- 문자열의 문자를 반복하십시오. 각 캐릭터에 대해 먼저 캐릭터를 현재 토큰에 추가하십시오. 그런 다음 현재 토큰이 이전에 방출 된 토큰 세트에 없으면 현재 토큰을 해당 세트에 추가하고 새 현재 토큰을 빈 문자열로 둡니다.
- 문자열 끝에 도달하면 현재 토큰이 비어 있으면 이전에 방출 된 토큰을 방출 순서대로 공백 문자로 구분하여 출력하십시오. 그렇지 않으면 원래 문자열을 그대로 출력합니다.
입력
STDIN에 대한 입력은 일련의 숫자 여야합니다.
산출
프로그램은 3 단계에서 지정한대로 결과를 인쇄해야합니다.
시료
샘플 입력
2015
10101010
4815162342
101010101010
3455121372425
123456789101112131415
314159265358979323846264338327950288419716939937
샘플 출력
2 0 1 5
10101010
4 8 1 5 16 2 3 42
1 0 10 101 01 010
3 4 5 51 2 1 37 24 25
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
3 1 4 15 9 2 6 5 35 8 97 93 23 84 62 64 33 83 27 95 0 28 841 971 69 39 937
이것은 코드 골프이므로 표준 CG 규칙이 적용됩니다. 바이트 단위의 최단 프로그램이 이깁니다.
(의견에 대한 설명을 요청하십시오. 나는 아직도 이것에 익숙하지 않습니다. 감사합니다!)
1 0 10
다음 반복은 1
(이미 사용됨) 찾은 다음 하나를 찾아 10
(이미 사용됨) 찾은 다음 하나를 찾음 101
으로 이동하여 새롭고 '추가'됩니다. 그런 다음 공백을 추가하면 0
이미 사용되었지만 문자열 끝에 있는 new를 얻을 수 있습니다. 따라서 출력 1 0 10 101 0
은 유효하지 0
않으며 ( 반복됨) 스크립트는 입력 문자열 만 출력해야합니다. 이미 사용 된 1010
경우 에만 만들 수 101
있습니다.
If a unique number cannot be formed at the end of the string, then the input should be printed verbatim
10101010은 분할 할 수 없으므로 그대로 인쇄됩니다.
1
있으며 반복됩니다. 대신 5 번 공간에서 오른쪽으로 한 번 이동 한 다음 4 단계에서 다시 오른쪽으로 이동하고 5 단계를 다시 입력하고을 만듭니다 101
.
4815162342
난 당신이,이 무슨 짓을했는지 볼 형제 나 .