도전
당신의 임무는 정수를 ASCII 문자 의 문자열로 인코딩 한 다음 해당 문자열이 무작위로 섞인 후에 성공적으로 디코딩하는 것입니다.
Encoder 및 Decoder 라고하는 두 개의 프로그램 / 기능 을 작성 합니다.
엔코더
- 입력 : 정수 범위 .
- 출력 : 문자열 의 아스키 문자 (반드시 인쇄되지 않음).
디코더
- 입력 : 임의의 순열 문자열 .
- 출력 : 정수 .
채점
하자 수 최대 길이 의 모든 가능한 값에서 . 경우] 인코더 비 결정적 행동 (허용되는, 아래 참조), 그 다음 최대 길이 인 것 (아마도 발생 ).
하자 수 의 길이 인코더 바이트의 의 길이 디코더 바이트입니다.L D
그런 다음 점수는 입니다.
승리는 가장 낮은 점수를 제출에 수여됩니다 .
시간 제한
단일 테스트 케이스 (즉, 단일 값 )에 대해 인코더 와 디코더 의 실행 시간에 1 분의 임의 시간 제한이 있습니다.
목표는 모든 속성을 특정 속성으로 열거하여 무차별 인코딩을 찾는 솔루션을 피하는 것입니다. 솔루션이 그보다 더 영리한 작업을 수행하는 경우 시간 제약 조건에 가장 적합하고 유효한 것으로 간주됩니다. 마찬가지로 임의의 선택된 값에 대해 TIO 에서 작동 하면 유효한 것으로 간주됩니다. 그렇지 않으면 내 컴퓨터에서 테스트하지만 솔루션이 순수한 무차별 인 경우 거의 실패합니다.
규칙
- 인코더 와 디코더는 작성해야합니다 같은 언어 .
- 디코더 필수의 출력 올바른 정수 모든 가능한 순열 문자열 에 의해 반환 인코더 .
- 인코더 와 디코더가 되어 있지 허용 정보를 공유 (전역 변수 또는 파일에 의해 예) 어떤 방법이다.
- 의 출력 인코더는 필요 하지 수 결정 (같은 입력이라고 경우 다른 출력 문자열을 생성 할 수 인코더는 여러 번 실행)하지만, 디코더는 항상 올바른 정수를 생각해야한다 .n
- 인코더 및 디코더 가지고 정수 반환 할 수 에 임의의 편리한 방식으로 (예를 들어 만약 의 입력이되는 것이 괜찮 , 나 ).n = 14
14
"14"
[1,4]
- 인코더 수도 문자열 출력 로 인해서 인쇄 그것을 또는 의해 반환 문자열리스트 / 문자 배열 또는 범위의 정수리스트 / 배열 ; 있습니다 디코더는 입력으로의 순열받을 에 의해 반환 인코더 는 문자열을 받아 들여야한다, 그래서 에 같은 형식 으로 .[ 0 , 127 ] 의 S ' 의
stdout
- 표준 허점 은 금지되어 있습니다.
- 가능하면 코드 작동 방식과 주장 점수가 정확한 이유를 설명 하십시오.
예
가정하십시오 .
- 인코더 수신
14
입력한다. 출력 될 수 있습니다"qwerty"
.- 디코더 의 전치 수신
"qwerty"
인스턴스로서 입력"tweyqr"
.14
편리한 형식으로 출력해야합니다 .
인코더 돌아왔다 수 [113,119,101,114,116,121]
있는 경우에,뿐만 아니라 디코더 (예를 들어)받은 것이다 [116,119,101,121,113,114]
.
인코더 가 반환 한 문자열 에는 인쇄 할 수없는 ASCII 문자도 포함될 수 있습니다 (그러나 항상 범위 내에 있음 [0x00, ..., 0x7F]
).