배경
Bzip ( 버로우, 휠러 및 백에 표시 ) 및 MTF ( 인쇄 가능한 ASCII 프론트 로 이동에 표시 )를 적용한 후 bzip2 압축기는 다소 독특한 형식의 런-렝스 인코딩을 적용합니다.
정의
이 과제를 위해 변환 BRLE을 다음과 같이 정의합니다.
입력 문자열을 감안할 의 다음을 수행 전적으로가 0x20 및 0x7A 사이의 코드 포인트와 ASCII 문자로 구성 :
동일한 각 문자 실행을 한 번의 문자 발생으로 바꾸고 첫 번째 이후의 반복 횟수를 저장하십시오.
bijective base-2 numeration 및 기호 및을 사용하여 문자가 처음 발생한 후 반복 횟수를 인코딩하십시오 .
{
}
음이 아닌 정수 N은 문자열로 인코딩되는 B 형 K 합 ... 0 되도록 N = 2 K I (B 형 K ) + ... + 2 0 I (b 0 ) , I는 (
{
1) = 및 I (}
) = 2 .이 표현은 항상 고유합니다. 예를 들어 숫자 0 은 빈 문자열로 인코딩됩니다.
해당 문자가 한 번 발생한 후 반복 횟수를 인코딩하는 중괄호 문자열을 삽입하십시오.
단계별 예
Input: "abbcccddddeeeeeffffffggggggghhhhhhhh"
Step 1: "abcdefgh" with repetitions 0, 1, 2, 3, 4, 5, 6, 7
Step 2: "" "{" "}" "{{" "{}" "}{" "}}" "{{{"
Step 3: "ab{c}d{{e{}f}{g}}h{{{"
직무
STDIN에서 단일 문자열을 읽거나 명령 행 또는 함수 인수로 참여하고 BRLE 또는 입력 문자열의 역수를 인쇄하거나 리턴하는 복잡한 프로그램 또는 함수를 구현하십시오.
입력에 중괄호가 없으면 BRLE을 적용하십시오. 입력에 중괄호가 있으면 그 반대를 적용하십시오.
예
INPUT: CODEGOLF
OUTPUT: CODEGOLF
INPUT: PROGRAMMING
OUTPUT: PROGRAM{ING
INPUT: PUZ{LES
OUTPUT: PUZZLES
INPUT: 444488888888GGGGGGGGGGGGGGGGWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
OUTPUT: 4{{8{{{G{{{{W{{{{{
INPUT: y}}}{{
OUTPUT: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
추가 규칙
당신은 할 수 BRLE 또는 문자열의 역수를 계산 기본 제공 기능을 사용합니다.
다음과 같은 내장 기능을 사용할 수 있습니다 .
반복 횟수가 bijective base-2에 저장되지 않는 한 문자열의 RLE 또는 RLD를 계산합니다.
모든 종류의 기본 변환을 수행하십시오.
출력에 STDOUT을 선택하면 코드에 줄 바꿈 문자가 인쇄 될 수 있습니다.
코드는 0x20에서 0x7A 범위의 중괄호 (0x7B 및 0x7D)와 함께 1000 개 이하의 ASCII 문자를 입력해야합니다.
입력에 중괄호가 포함 된 경우 BRLE을 문자열에 적용한 결과라고 가정 할 수 있습니다.
표준 코드 골프 규칙이 적용됩니다. 바이트 단위의 최단 제출이 이깁니다.